Флажки группировки - jQuery / JS / ASP.NET - PullRequest
0 голосов
/ 28 июня 2018

Поэтому я группирую флажки с именем группы данных и использую 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>

Ждем любых идей о том, какой подход предпринять, чтобы сделать эту работу.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

[РЕШИТЬ]

Вот что я сделал, чтобы заставить его работать:

Я получил таблицу так:

var tblID = $(e.target).closest('.select-all');

потому что .select-all - это класс, который я использую для всех таблиц, в которых я использую флажки.

и затем я только зацикливаюсь в этой таблице следующим образом:

 var chs = $(tblID).find("[data-groupname='" + groupName + "']")
        $(chs).each(function (i) {           
        var chk = $(chs[i]).children().first();         
        $(chk).prop('checked', isChecked);           
    })

Спасибо всем за ваши ответы. Вы все проголосовали.

Удачного кодирования.

0 голосов
/ 28 июня 2018

Другими словами, я не хочу искать какие-либо имена групп за пределами этой таблицы .

Если эта таблица имеет идентификатор или класс, вы можете ограничить выбор таблицы «[data-groupname = '» + groupName + »'] следующим образом:

$ ("[data-groupname = '" + groupName + "']", "# id-table") ;

или

$ ("# id-таблица"). Find ("[data-groupname = '" + groupName + "']") ;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...