【问题标题】:SlickGrid Unselect Row CheckBox EventSlickGrid 取消选择行复选框事件
【发布时间】:2012-07-01 05:47:22
【问题描述】:

我是 jQuery 新手,我需要在我的项目中使用网格。我选择了 SlickGrid(确实很漂亮)。取消选择行时,我需要禁用某些按钮。

我正在使用以下回调:

grid.onSelectedRowsChanged.subscribe(function(){});

问题是回调只在选择时执行 - 而不是在取消选择行时。

【问题讨论】:

  • 不应该这样。包括一个 jsfiddle.net 复制品。

标签: javascript jquery html slickgrid


【解决方案1】:
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 世界的新手,这可能不是最好的解决方案。我只是觉得值得一试

【讨论】:

    【解决方案2】:
    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
    });
    

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 2014-10-10
      • 2011-09-03
      • 2013-06-20
      • 2011-05-15
      • 2011-05-15
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多