如何在重新排序后为所有可见行调用ui-grid cellClass函数?

时间:2016-09-27 21:34:57

标签: angular-ui-grid

我编写了一个cellClass函数rowSpanCellClass来实现像HTML rowspan这样的东西。当在使用rowSpanCellClass的列中重复某个值时,具有重复值的单元格将显示为垂直合并。

最初渲染网格时,此工作正常。但是,如果我反转不同列(docNum)的排序顺序,则不会为每一行调用rowSpanCellClass。因此,rowSpanCellClass列中的一个单元格的类应该不会更改。

以下simple plunker证明了我的问题。

如果单击Doc Num标题两次以反转初始排序顺序,则控制台的输出显示除了rowRenderIndex = 3的行之外的所有行都会调用rowSpanCellClass。

我相信会跳过这一行,因为在重新排序行时它不会改变。需要为所有行调用rowSpanCellClass,因为单元类不仅取决于当前行值,还取决于相邻行值。

我尝试使用以下代码强制在每一行调用cellClass函数

$scope.gridOptions.onRegisterApi = function (gridApi) {
      gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
          gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);
      });
  };

但是,sortChanged事件在重新排序行之前触发,因此不起作用。

如果在重新排序后的所有可见行上调用rowSpanCellClass,我该怎么办?

1 个答案:

答案 0 :(得分:0)

我通过使用自定义单元格模板和ng-class而不是cellClass解决了这个问题。

cellTemplate: '<div ng-class="grid.appScope.rowSpanCellClass(grid, row, col)" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div>'}

此更改位于此plunkr

相关问题