SlickGrid onSelectedRowsChanged 未触发

SlickGrid onSelectedRowsChanged not firing

我对 slickgrid 有以下问题:

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

上述第 6 步中所述的问题。这是显示问题的 jsfiddler 的 link: 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 = '';
     });

请帮忙

我通过处理 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);
            });

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

看看

 function handleClick(e)...

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

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