DataTables组选择/取消选择

时间:2017-03-16 16:50:35

标签: datatables datatables-1.10

我试图找出如何在数据表中创建组选择/取消选择。表中的每一行都标有一个组(整数),对于任何给定的选择,它应该选择/取消选择具有相同组号的所有其他项。我觉得我与下面的代码非常接近...但是,不幸的是,当我选择相关的行时,它们反过来触发select事件,这是一个无限循环,我正在玩e.preventDefault()但是没有'似乎有所帮助。任何建议都非常感谢。谢谢!

     table.on("select", function(e, dt, type, indexes) {

            var data = table.rows(indexes).data();
            var group = data[0]['Group'];

            table.rows(function(idx, rowData, node) {
                return rowData.Group === group;
            }).select();

        });

1 个答案:

答案 0 :(得分:1)

您可以在选择其他行之前分离事件处理程序,并在选择之后重新附加它,如下所示:

function onSelect(e, dt, type, indexes){
    var data = dt.rows(indexes).data();
    var group = data[0]['Group'];

    // Detach event hanlder
    dt.off('select', onSelect);

    dt.rows(function(idx, rowData, node) {
        return rowData.Group === group;
    }).select();

    // Re-attach event hanlder
    dt.on('select', onSelect);
});

table.on('select', onSelect);

您还可以使用全局变量,例如:

var ignoreSelect = false;
table.on("select", function(e, dt, type, indexes) {
   if(ignoreSelect){ return; }

   var data = dt.rows(indexes).data();
   var group = data[0]['Group'];

   ignoreSelect = true;

   dt.rows(function(idx, rowData, node) {
      return rowData.Group === group;
   }).select();

   ignoreSelect = false;
});