【问题标题】:SlickGrid onSelectedRowsChanged not firingSlickGrid onSelectedRowsChanged 未触发
【发布时间】:2015-06-30 14:06:53
【问题描述】:

我对 slickgrid 有以下问题:

  1. 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
  2. 按住控制按钮
  3. 左键单击第 2 行(onSelectedRowsChanged 按预期触发)
  4. 左键单击第 1 行(onSelectedRowsChanged 按预期触发)
  5. 松开控制按钮
  6. 单击第 1 行 (onSelectedRowsChanged 不会触发!如果您单击与之前相同的第 1 行单元格)

上述第 6 步中描述的问题。这是显示问题的 jsfiddler 的链接: http://jsfiddle.net/fortesl/oLj8otsj/1/

附上代码:

         var grid;
     var data = [];
     var columns = [{
         id: "title",
         name: "Title",
         field: "title",
         width: 300,
         selectable: false,
         resizable: false
     }, {
         id: "priority",
         name: "Priority",
         field: "priority",
         width: 200,
         selectable: false,
         resizable: false
     }];

     var options = {
         editable: true,
         enableAddRow: true,
         enableCellNavigation: true,
         forceFitColumns: true,
         autoEdit: false
     };

     for (var i = 0; i < 100; i++) {
         var d = (data[i] = {});
         d["title"] = "Task " + (i + 1);
         d["priority"] = "Medium";
     }

     grid = new Slick.Grid("#myGrid", data, columns, options);

     grid.setSelectionModel(new Slick.RowSelectionModel());

     grid.onSelectedRowsChanged.subscribe(function () {
         var selectedRows = grid.getSelectedRows();
         for (var i = 0; i < selectedRows.length; i++) {
             selectedRows[i] = selectedRows[i] + 1;
         }
         $('.selected-rows')[0].innerHTML = selectedRows;
     });
     grid.onClick.subscribe(function () {
         $('.selected-rows')[0].innerHTML = '';
     });

请帮忙

【问题讨论】:

标签: javascript jquery angularjs slickgrid


【解决方案1】:

我通过处理 OnClick 事件并从处理程序调用 setSelectedRows 解决了我的问题。如下图:

                grid.onClick.subscribe(function(e) {
                var cell = $scope.grid.getCellFromEvent(e);
                var row = (cell) ? cell.row : 0;
                var rows = [row];
                grid.setSelectedRows(rows);
            });

【讨论】:

    【解决方案2】:

    这是因为单元格(而不是行)处于活动状态,并且在 slick.grid.js 中有一项检查,以确保在单击已处于活动状态的单元格时未激活触发器。

    看看

     function handleClick(e)...
    

    在源代码文件中,您会看到有问题的检查。

    【讨论】:

      【解决方案3】:

      OnClick 事件和调用 setSelectedRows 会给出所选行的另一种高亮颜色(更像是黄色-粉红色)而不是 onSelectedRowsChanged(在我的应用程序中为蓝色)

      【讨论】:

      • 添加更多细节。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多