我有一个页面,用户可以在 datalist 控件中选择不同的文档文件。使用 on pre-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;
}
}
}
我一直在寻找可以在我的代码中工作但没有运气的东西。而且我对这段代码投入太多,现在无法尝试 Checkboxlist 控件(不确定这是否会有所帮助)。有任何想法吗?我想我可以使用:http ://www.dotnetcurry.com/ShowArticle.aspx?ID=77代码,但不知道如何使它工作?如果我能以某种方式使全选复选框与标签绑定,然后查找所有标签,那么链接的代码可能会有所帮助。谢谢!