Вы можете сделать это на стороне клиента или на стороне сервера
стороне клиента с помощью JavaScript/JQuery
В флажками добавляются динамически вам нужно будет использовать метод on
для привязки флажков функции и стрелять, когда их состояние меняется.
$(document).ready(function() {
$(".checkbox").on("change", function() {
if(!$(this).is(":checked")){
$(".selectAll").prop('checked', false);
}
});
});
Вот jsFiddle с полным функционированием выбрать все, что будет:
- Выбрать все/Отменить все
- убрать галочку Select All, когда один из флажков является неотмеченным
- Tick выбрать все когда отмечены все галочки
Сфера сервера
использовать обработчик события на обратную передаче (АЯКС), когда флажок неотмеченный и петля через все флажки и снимите выделение их
Шрифт конца использует Ajax, чтобы сделать частичную обратную передачу, чтобы обновить GridView. флажки «Выбрать все» и квадратные сетки вызовут обратную передачу.
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:GridView ID="gvCheckBoxes" runat="server">
<Columns>
<asp:TemplateField >
<ItemTemplate>
<asp:CheckBox ID="cbCheckBox" OnCheckedChanged="CheckBoxChanged" AutoPostBack="true" runat="server" />
</ItemTemplate>
/asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="cbSelectAll"/>
</Triggers>
</asp:UpdatePanel>
Код За
Выбор: обработчик события Все флажок петли через GridView и находит галочки. Он галочит их, если отмечен флажок «Выбрать все», иначе он не удаляет их
Обработчик события checkbox через сетку пересекает флажки и устанавливает флаг, чтобы определить, следует ли отмечать или отключать флажок «Выбрать все». Она существует цикл, если любой из флажков не тикали, как выбрать все должны поэтому быть неотмеченным а
public void SelectAll (Object sender, Eventargs e)
{
foreach (var row in grid.Rows)
{
var checkBox = (CheckBox)row.FindControl("cbCheckBox");
checkBox.Checked = cbSelectAll.Checked;
}
}
public void CheckBoxChanged(Object sender, Eventargs e)
{
var isSelectAll = true;
foreach (var row in grid.Rows)
{
var checkBox = (CheckBox)row.FindControl("cbCheckBox");
if(!checkBox.Checked)
{
isSelectAll = false;
break;
}
}
cbSelectAll.Checked = isSelectAll;
}
Может быть, вы можете объяснить, что вы сделали и почему? Кроме того, при отправке кода на двух разных языках я бы рекомендовал включить блок текста между ними (если ничего не делать), указывая на переключатель. Это также дает вам возможность (при необходимости) дать подсказку синтаксическому маркеру для переключения правил. –