我编写了一个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,我该怎么办?
答案 0 :(得分:0)
我通过使用自定义单元格模板和ng-class而不是cellClass解决了这个问题。
cellTemplate: '<div ng-class="grid.appScope.rowSpanCellClass(grid, row, col)" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div>'}
此更改位于此plunkr
中