我有一个角度ui网格,有外部过滤器和列过滤器。 我在应用外部过滤器时以及在重置外部过滤器时使用rowsProcessor。
我使用此命令重置过滤器。
$scope.gridApi.grid.registerRowsProcessor( $scope.DisplayAll, 200 );
$scope.DisplayAll = function( renderableRows ){
renderableRows.forEach( function( row ) {
row.visible = true;
});
return renderableRows;
}
完成此操作后,网格将填充所有数据,但网格中的列过滤器不起作用。 任何人都可以解释为什么会这样。谢谢!
答案 0 :(得分:0)
简短回答:"全部显示"过滤器作为rowsProcessor过滤器没有多大意义,因为它将在每个过滤周期后运行并覆盖在它之前应用的所有内容。
以下是对问题的进一步描述:
您已告知DisplayAll
在网格中以优先级200运行,这意味着之前应用的所有过滤器(包括内置列过滤器)都将被row.visible = true;
覆盖。
如果列过滤器(在priotiry 100上运行)确定不应显示行,则会设置row.visible = false;
。 发生后,当DisplayAll
遇到该行时,它会更改row.visible = true;
,从而忽略列过滤器。
添加的任何rowsProcessor过滤器都应通过执行row.visible = row.visible && <new condition>
之类的操作来考虑先前应用的过滤器。