jQuery は初めてで、プロジェクトでグリッドを使用する必要があります。私は SlickGrid を選びました (実に滑らかです)。行の選択が解除されたときに特定のボタンを無効にする必要があります。
次のコールバックを使用しています。
grid.onSelectedRowsChanged.subscribe(function(){});
問題は、行が選択解除されたときではなく、選択時にのみコールバックが実行されることです。
jQuery は初めてで、プロジェクトでグリッドを使用する必要があります。私は SlickGrid を選びました (実に滑らかです)。行の選択が解除されたときに特定のボタンを無効にする必要があります。
次のコールバックを使用しています。
grid.onSelectedRowsChanged.subscribe(function(){});
問題は、行が選択解除されたときではなく、選択時にのみコールバックが実行されることです。
var lastSelectedRow = null;
grid.onSelectedRowsChanged.subscribe(function () {
if (lastSelectedRow && lastSelectedRow != grid.getSelectedRows()[0]) {
var item = dataView.getItem(lastSelectedRow);
// Do something with item;
}
lastSelectedRow = grid.getSelectedRows()[0];
// other logic may go here
});
grid.onSelectedRowsChanged.subscribe(function(){
var selectedRows = grid.getSelectedRows();
if (selectedRows.length === 0) {
// (when all rows are deselected)
// your logic goes here...
}
});
行の選択解除でロジックを実行する場合は、SelectedRowsChanged イベントで更新されるグローバル変数に selectedRows を格納することをお勧めします。また、onSelectedRowsChanged では、グローバル selectedRows 変数と grid.getSelectedRows() の長さを比較して、変更が発生したかどうかを確認できます。
var lastSelectedRows = [];
grid.onSelectedRowsChanged.subscribe(function(){
var selectedRows = grid.getSelectedRows();
if (selectedRows.length < lastSelectedRows.length ) {
// proceed in finding the actual row by comparing the two arrays
// the rest of the logic goes here...
}
lastSelectedRows = selectedRows;
});
!私は Slickgrid の世界では初心者であり、これが最善の解決策ではない可能性があることに注意してください。試してみる価値はあると思います。