ユーザーがデータリストコントロールでさまざまなドキュメントファイルを選択できるページがあります。ドキュメントは、onpre-renderイベントハンドラーを使用してカテゴリに基づいて分類されます。ドキュメントは、チェックボックスコントロール(チェックボックスリストではない)に基づいて選択されます。ここまでは順調ですね。次に実行したいのは、各カテゴリの名前の横に[すべて選択]チェックボックスを配置することです。これにより、そのカテゴリの下のチェックボックスのみが選択されます。データリストコントロールは次のとおりです。
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Vertical" OnPreRender="DataList1_PreRender" DataKeyField="docid" EnableViewState="false">
<ItemTemplate>
<table cellpadding="0" cellspacing="0" id="tbl_data">
<tr>
<td>
<asp:Label ID="lblHeader" runat="server" Font-Bold="True" Font-Underline="True"></asp:Label>
<asp:Label runat="server" id="lbl_cb_all" visible="false">Select All <input runat="server" id="cb_selectall" type="checkbox" value='<%# Eval("catid") %>' /> </asp:Label>
</td>
</tr>
<tr runat="server" id="tr_data">
<td>
<asp:Label ID="lbl_categoryname" runat="server" Text='<%# Eval("categoryname") %>' Visible="false" /> <!-- Hide this; only used in Code Behind -->
<input runat="server" id="cb_docid" type="checkbox" value='<%# Eval("docid") %>' />
<asp:Hyperlink ID="hpl_docfileencr" Text='<%# Eval("docfileencr") %>' NavigateUrl='<%# "~/PDFEncr/" + DataBinder.Eval(Container.DataItem, "docfileencr") %>' Target="_blank" runat="server" />
<br />
</td>
</tr>
</table>
</ItemTemplate>
OnPreRenderコードは次のとおりです。
protected void DataList1_PreRender(object sender, EventArgs e)
{
string strTempLabelCategory = "";
foreach (DataListItem item in DataList1.Items)
{
Label lbl_categoryname = item.FindControl("lbl_categoryname") as Label;
if (strTempLabelCategory.ToUpper() != lbl_categoryname.Text.ToString().ToUpper())
{
strTempLabelCategory = lbl_categoryname.Text.ToString().ToUpper();
Label lblHeader = item.FindControl("lblHeader") as Label;
lblHeader.Text = strTempLabelCategory.ToUpper();
Label lbltempdiv = item.FindControl("lbl_cb_all") as Label;
lbltempdiv.Visible = true;
}
}
}
私は自分のコード内で機能するものを探しましたが、運がありません。そして、私はこのコードに投資しすぎて、チェックボックスリストコントロールを試すことができません(とにかくそれが役立つかどうかはわかりません)。何か案は?http://www.dotnetcurry.com/ShowArticle.aspx?ID=77コードを使用できると思いましたが、どうすればそれを機能させることができるかわかりませんか?どういうわけか、[すべて選択]チェックボックスをタグに関連付けてからすべてのタグを探すことができれば、リンクのコードが役立つ可能性があります。ありがとう!