根据https://www.ag-grid.com/javascript-grid-filter-set/, #agreed :“由于用例过多,因此网格无法为您更新过滤器...”。
我正在使用服务器端数据源和无限分页查询大量数据。尽管在初始加载时,我可能会确信过滤器会列出所有可用的“选择”,但我希望能找到一种解决方案,以便确定某个频率/事件“重新加载”过滤器。
我正在尝试使用通过调用resetFilterValues()
返回的对象的gridOptions.api.getFilterInstance(id)
方法。
使用服务器端数据源时,我收到以下console.error输出:
ag-Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values (Source ag-grid-enterprise.min.js:555
注意:具有异步值加载的values方法可以出色地工作,并且是根据建议编写的,例如回调有参数的params.success。
我使用以下方法将筛选器选项加载到列标题中:
{
headerName: 'Something',
field: 'SOMETHING',
width: 200,
suppressMenu: false,
suppressFilter: false,
filter: 'agSetColumnFilter',
filterParams: {
values: function (params) {
someAsyncMethodReturningAPIResultsAsArray();
}
newRowsAction: 'keep'
},
menuTabs: ['filterMenuTab']
}
然后我尝试使用以下代码在以后的时间(例如,在网格外部按下按钮时)重新加载过滤器:
var filter = gridOptions.api.getFilterInstance(id);
filter.resetFilterValues();
此代码会导致上面显示的错误。
问:有谁知道如何配置Set Model来返回错误消息中所述的行?是否有更好的方法来解决任何有经验的人的问题?
谢谢
答案 0 :(得分:0)
下面这段代码可以在postProcessPopup
回调中执行,每次打开弹窗时都会调用values()
中定义的filterParams
函数
var filter = gridOptions.api.getFilterInstance(id);
filter.refreshFilterValues();
注意:refreshFilterValues
函数在这里起到了作用。它在 v24 及更高版本中可用。对旧版本不太确定。