2017-03-16 41 views
0

データセットでグループ選択/選択解除を作成する方法を理解しようとしています。テーブルの各行はグループ(整数)でタグ付けされています。任意の選択に対して、同じグループ番号を持つ他のすべての項目を選択/選択解除する必要があります。私は以下のコードにかなり近いように感じます...しかし、残念ながら、関連する行を選択すると、selectイベントが発生し、e.preventDefault()で遊んでいた無限ループですが、助けてくれるようです。どんな提案も大歓迎です。ありがとう!下図のようにあなたが選択した後、それを他の行を選択する前に、イベントハンドラをデタッチし、再接続することができDataTablesグループ選択/選択解除

 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

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; 
}); 
+0

ありがとうございます!まっすぐに見える...私はこれらのオプションのいずれかを考えなかったと信じがたい。 – GargantuanTezMaximus

関連する問題