如何在 ag-grid 中预设列过滤器 [英] how to pre-set column filter in ag-grid
问题描述
我有一个使用 ag-grid
的 Ionic/Angular
应用程序.我希望某些网格在加载网格时自动应用过滤器 - 无需用户执行任何操作.
I have an Ionic/Angular
app using ag-grid
. I would like certain grids to have a filter automatically applied when the grid is loaded - without the user having to do anything.
我尝试了以下方法:
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();
}
但它什么也没做.有什么想法吗?
but it did nothing. Any ideas?
推荐答案
AgGrid 在 24.0 版中包含一个 onFirstDataRendered 回调,如后面的评论中所述.下面的原始答案现在仅与此功能之前的版本相关.
AgGrid included a onFirstDataRendered callback in version 24.0, as stated in later comments. The original answer below is now only relevant for versions which pre-date this functionality.
onFirstDataRendered(params) {
var filterComponent = params.api.getFilterInstance("isActive");
filterComponent.setModel({
type: "greaterThan",
filter: 0
});
filterComponent.onFilterChanged();
}
在他们的几个 example 较旧的 plunk 中重现了您的问题,似乎通过添加一个小的延迟来缓解.只是冒险猜测 DOM 可能还没有完全准备好,尽管网格已经准备好了.
Reproduced your problem in a couple of their example older plunks, seemed to be alleviated by adding a small delay. Just venturing a guess that maybe the DOM isn't completely ready yet, although the grid is.
Pre-onFirstDataRendered 版本:
Pre-onFirstDataRendered versions:
onGridReady(params) {
params.api.sizeColumnsToFit();
setTimeout(() => {
var filterComponent = params.api.getFilterInstance("isActive");
filterComponent.setModel({
type: "greaterThan",
filter: 0
});
filterComponent.onFilterChanged();
},150)
}
这篇关于如何在 ag-grid 中预设列过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!