初始加载后 ag-grid 刷新列过滤器
Posted
技术标签:
【中文标题】初始加载后 ag-grid 刷新列过滤器【英文标题】:ag-grid Refresh Column Filter after initial load 【发布时间】:2019-08-16 01:53:45 【问题描述】:根据https://www.ag-grid.com/javascript-grid-filter-set/,“网格不会为您更新过滤器,因为用例太多...”,#agreed。
我正在使用具有无限分页功能的服务器端数据源来查询大量数据。虽然在初始加载时,我可能确信过滤器列出了所有可用的“选择”,但我希望找到一种解决方案,以确定某个频率/事件“重新加载”过滤器。
我正在尝试使用调用 gridOptions.api.getFilterInstance(id)
返回的对象的 resetFilterValues()
方法。
使用服务器端数据源时,我收到以下 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 以返回错误消息中描述的行?有没有更好的方法来解决任何人都遇到过的这个问题?
谢谢
【问题讨论】:
您找到刷新(重新加载)过滤器的方法了吗?我试图找出同样的事情 对不起,没有。看起来这个项目也打了他们的后腿。我最终推出了自己的自定义过滤器并端到端拥有整个流程。不幸的是,根本没有使用他们的内置过滤器。如果有帮助,很乐意分享通用代码,请私信我 @Pepto 我正在努力解决同样的问题。您能否就这个问题分享您的自定义过滤器?这将有很大帮助。提前谢谢! 【参考方案1】:下面这段代码可以在postProcessPopup
回调中执行,每次打开弹窗时都会调用filterParams
中定义的values()
函数
var filter = gridOptions.api.getFilterInstance(id);
filter.refreshFilterValues();
注意:refreshFilterValues
函数在这里起到了作用。它在 v24 及更高版本中可用。不太确定旧版本。
【讨论】:
以上是关于初始加载后 ag-grid 刷新列过滤器的主要内容,如果未能解决你的问题,请参考以下文章