Флажок в заголовке Datagrid ClientID (JQuery)
На главной странице у меня есть стандартная DataGrid:
<asp:DataGrid ID="dgMyGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<asp:CheckBox CssClass="Checker" ID="cbSelectAll" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbSelect" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Имейте следующий jQuery, который заставляет заголовок флажок выбрать все:
$(document).ready(function() {
$("#ctl00_ContentPlaceHolder1_dgMyGrid_ctl01_cbSelectAll").click(function() {
$("#<%=dgID %> :checkbox").each(function(i)
{
this.checked = $("#ctl00_ContentPlaceHolder1_dgMyGrid_ctl01_cbSelectAll").is(":checked")
});
});
});
это работает, но это немного уродливо - я не могу получить идентификатор клиента для флажка заголовка с
<% = cbSelectAll.ClientID%> (как я сделал для сетки данных) Возможно, потому что javascript отображается перед этим элементом управления. Есть ли для меня более элегантный способ получить clientID моего флажка из сетки данных? Я думаю, что было бы лучше, если бы я не жестко закодировал clientID как этот.
Извиняюсь, если ответ на этот вопрос очевиден, это мой первый день, когда я пробую jQuery!:)
2 ответа
Этот код, чтобы найти свой флажок
protected static Control FindControl(Control control, string controlId)
{
Control result;
foreach (Control ctrl in control.Controls)
{
if (ctrl.ID == controlId)
{
result = ctrl;
return result;
}
if (ctrl.Controls.Count != 0)
{
result = FindControl(ctrl, controlId);
if (result != null)
{
return result;
}
}
}
return null;
}
И теперь вы можете использовать на странице aspx:
<%= FindControl(dgMyGrid, "cbSelectAll").ClientID%>
Почему бы просто не ссылаться на класс флажка "cbSelectAll".
<asp:CheckBox CssClass="Checker" ID="cbSelectAll" runat="server" />
$("#<%=dgID %> :checkbox").each(function(i)
{
this.checked = $(".Checker").is(":checked");
});
Если класс "Checker" используется для нескольких элементов управления, вы всегда можете назначить уникальный класс.
<asp:CheckBox CssClass="Checker cbSelectAll" ID="cbSelectAll" runat="server" />
$("#<%=dgID %> :checkbox").each(function(i)
{
this.checked = $(".cbSelectAll").is(":checked");
});