use*_*448 9 ag-grid ag-grid-ng2
我有一个Ionic/Angular使用的应用程序ag-grid。我希望某些网格在加载网格时自动应用过滤器-无需用户做任何事情。
我尝试了以下方法:
onGridReady(params) {
params.api.sizeColumnsToFit();
// get filter instance
var filterComponent = params.api.getFilterInstance("isActive");
// OR set filter model and update
filterComponent.setModel({
type: "greaterThan",
filter: 0
});
filterComponent.onFilterChanged();
}
Run Code Online (Sandbox Code Playgroud)
但是什么也没做。有任何想法吗?
小智 6
在他们的几个例子中重现了您的问题,似乎可以通过增加一些延迟来缓解。只是猜测一下,虽然网格已经准备就绪,但DOM可能尚未完全准备好。
固定:
onGridReady(params) {
params.api.sizeColumnsToFit();
setTimeout(() => {
var filterComponent = params.api.getFilterInstance("isActive");
filterComponent.setModel({
type: "greaterThan",
filter: 0
});
filterComponent.onFilterChanged();
},150)
}
Run Code Online (Sandbox Code Playgroud)
我认为问题是,当加载新行时,网格会重置过滤器。有多种方法可以解决这个问题:
预定义的过滤器类型有一个名为newRowsAction的过滤器参数
https://www.ag-grid.com/javascript-grid-filter-text/#params
newRowsAction:加载新行时要做什么。默认是重置过滤器。如果要在行加载之间保持过滤器状态,请将此值设置为“保持”。
这个答案建议设置gridOptions属性deltaRowDataMode=true
rowDataChanged, rowDataUpdated当数据更改时,这些都应该保留过滤器,但我认为如果您只希望在第一次加载时过滤器,您仍然需要一些额外的逻辑(设置标志)。
小智 5
我最终做到了。
var FilterComponent = gridOptions.api.getFilterInstance('Status');
FilterComponent.selectNothing(); //Cleared all options
FilterComponent.selectValue('Approved') //added the option i wanted
FilterComponent.onFilterChanged();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7347 次 |
| 最近记录: |