我有一个页面,用户可以通过数据列表控件选择不同的文档文件。使用“预呈现”事件处理程序,根据类别对文档进行分类。文档是基于复选框控件(而不是复选框列表)选择的。到目前为止都很好。接下来我想实现的是在每个类别名称旁边放置一个“全选”复选框,它应只选择该类别下的复选框。这是数据列表控件:
<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 的代码,但不确定如何使其工作?如果我能让全选复选框与一个标签绑定,然后查找所有的标签,那么链接的代码可能会有所帮助。 谢谢!