У меня есть страница, на которой пользователи могут выбирать файлы разных документов в элементе управления datalist. Документы классифицируются по категориям с использованием обработчика события предварительной обработки. Документы выбираются на основе элементов управления Checkbox (а не Checkboxlist). Все идет нормально. Далее я хочу поставить флажок «Выбрать все» рядом с именем каждой категории, в котором должны быть выбраны только флажки под этой категорией. Вот контроль DataList:asp.net datalist выбрать все флажки для каждой категории
<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 код, но не знаю, как я могу это сделать? Если я смогу каким-то образом сделать привязку галочки к тегу, а затем искать все теги, то может быть, код ссылки поможет. Спасибо!
использовать jquery, чтобы установить флажки для элементов, являющихся дочерними элементами элемента datalist. когда флажок select all проверен, он запускает jquery, чтобы получить элемент datalist по идентификатору, а затем цикл через дочерние элементы, которые являются входами типа флажка, и переключает их. – Brian
Брайан, спасибо. Но моя проблема состоит в том, чтобы выяснить элемент «datalist по id, а затем цикл через дочерние элементы» ... – IrfanClemson
Я попытался, чтобы каждый ItemTemplate содержал таблицу с идентификатором tbl_data, а затем нашел родительскую таблицу tbl_data для сверления в флажках внутри tr_data для поиска флажков, но таблицы tbl_data - рендеринг для каждого элемента. – IrfanClemson