2017-04-24 13 views
0

私は外部フィルタと列フィルタを持つ角度uiグリッドを持っています。 外部フィルタを適用しているときと外部フィルタをリセットしているときにrowsProcessorを使用しています。ui-gridでrowsProcessorを適用した後に列フィルタリングが機能しない

私はフィルタをリセットするためにこのコマンドを使用しています。

$scope.gridApi.grid.registerRowsProcessor($scope.DisplayAll, 200); 

$scope.DisplayAll = function(renderableRows){ 
renderableRows.forEach(function(row) { 
       row.visible = true; 

       }); 
      return renderableRows; 
} 

これが完了すると、グリッドにはすべてのデータが入力されますが、グリッドにある列フィルタは機能しません。 誰もこれがなぜ起こっているのか説明できますか?ありがとう!

答えて

0

短い答え: "display all"フィルタをrowsProcessorフィルタとして使用することは意味がありません。これは、すべてのフィルタリングサイクルの後に実行され、その前に適用されたすべての処理をオーバーライドするためです。

ここでは、問題のいくつかの更なる説明です:

あなたがされている(組み込みの列フィルタを含む)その前に適用されたすべてのフィルタを意味し、グリッド内の200の優先順位で実行するDisplayAllに語っていますrow.visible = true;で上書きされます。

列フィルタ(priotiry100で実行されている)によって行が表示されないと判断された場合は、row.visible = false;が設定されます。 の後で、DisplayAllがその行に出会うと、row.visible = true;が変更され、列フィルタは無視されます。

追加されたすべてのrowsProcessorフィルタは、row.visible = row.visible && <new condition>などの何らかの処理を行うことで、以前に適用されたフィルタを考慮する必要があります。