我是 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...
}
});
如果您想在任何取消选择的行上执行逻辑,我建议将 selectedRows 存储在全局变量中,该变量将在 SelectedRowsChanged 事件中更新。同样在 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 世界的新手,这可能不是最好的解决方案。我只是觉得值得一试。