Поэтому я группирую флажки с именем группы данных и использую jQuery для автоматического выбора всей группы, если один из членов группы отмечен.
Вот мой код JS:
function checkAllList(listNavPath, selectAllId, checkBoxes) {
if (!checkBoxes) {
checkBoxes = $(listNavPath + ":not(#" + selectAllId + ")")
}; //Exclude first checkbox
function selectAllCheckBoxes() {
if (checkBoxes.filter(":checked").length == checkBoxes.length) {
$("#" + selectAllId).prop("checked", true);
} else {
$("#" + selectAllId).prop("checked", false);
}
}
selectAllCheckBoxes();
$(document).on("click", "#" + selectAllId, function () { checkBoxes.prop('checked', $(this).prop("checked")); });
$(document).on("click", checkBoxes, function (e) {
var isChecked = $(e.target).prop("checked");
var parent = $(e.target).parent();
var groupName = $(parent).data("groupname");
var chs = $("[data-groupname='" + groupName + "']");
$(chs).each(function (i) {
var chk = $(chs[i]).children().first();
$(chk).prop('checked', isChecked);
})
Это работает просто отлично, но я хочу ограничить .each () только циклом через родительский элемент "имени группы", если это имеет смысл. Другими словами, я не хочу искать имена групп за пределами этой таблицы. В моем примере просматривает всю страницу, чтобы найти имя этой группы, а затем, если "Parent Group Name" == "groupName", тогда автоматически выберите / отмените выбор группы или верните true; продолжить цикл.
Это мой флажок в разметке ASP. Это создает столбец флажков, по одному на каждую строку. Флажки генерируются динамически из кода позади (vb.net).
<asp:TemplateField>
<HeaderTemplate><asp:CheckBox runat="server" Checked="true" /></HeaderTemplate>
<ItemTemplate><asp:CheckBox runat="server" data-groupname='<%#Eval("InvoiceCreditNumber")%>' Checked="true" ID="chkSelected" /></ItemTemplate>
</asp:TemplateField>
Ждем любых идей о том, какой подход предпринять, чтобы сделать эту работу.
Спасибо.