【问题标题】:ag-grid Refresh Column Filter after initial load初始加载后 ag-grid 刷新列过滤器
【发布时间】: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 我正在努力解决同样的问题。您能否就这个问题分享您的自定义过滤器?这将有很大帮助。提前谢谢!

标签: ag-grid


【解决方案1】:

下面这段代码可以在postProcessPopup回调中执行,每次打开弹窗时都会调用filterParams中定义的values()函数

var filter = gridOptions.api.getFilterInstance(id);
filter.refreshFilterValues();

注意refreshFilterValues 函数在这里起到了作用。它在 v24 及更高版本中可用。不太确定旧版本。

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 2018-11-05
    • 1970-01-01
    • 2020-08-15
    • 2021-07-19
    • 2023-03-27
    • 2019-08-25
    • 2020-06-12
    • 2019-07-28
    相关资源
    最近更新 更多