首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在页面重载时保存ag-grid过滤器模型

在页面重载时保存ag-grid过滤器模型
EN

Stack Overflow用户
提问于 2021-04-26 22:10:57
回答 1查看 47关注 0票数 0

我有一个带无限滚动和从IDatasource检索数据的ag-grid。

我要做的是在过滤器模型发生变化时将其保存到会话存储中,然后在网格重新加载时加载并应用它,即当用户离开页面后又回来时。

我有一个onFilterChanged事件处理程序,它可以

代码语言:javascript
运行
复制
onFilterChanged(params) {
    sessionStorage["myFilters"] = JSON.stringify(this.gridApi.getFilterModel());
}

我想要做的是

代码语言:javascript
运行
复制
onGridReady(params) {
    this.gridApi = params.api;    
    setTimeout(() => {      
      if(sessionStorage["myFilters"] !== undefined) {
        const filters = JSON.parse(sessionStorage["myFilters"]);

        this.gridApi.setFilterModel(filters);        
      }
      this.gridApi.setDatasource(this.myDataSource);      

    }, 0);
  }

然而,即使保存到会话存储中的JSON是正确的,当在我的IDatasource上调用getRows时,它的filterModel参数的过滤器值也是空的:

这是否与以下事实有关:我的过滤器是一个集合过滤器,该集合的值是从另一个API端点动态加载的?

有没有办法做到这一点?

EN

Stack Overflow用户

发布于 2021-04-27 22:50:07

我发现我的set filter中有一个错误,它没有正确实现setModel和getModel;解决方案是在调用setModel时将filter的值存储在filter组件本身中,并在调用getModel时对其进行检查:

代码语言:javascript
运行
复制
  getModel() {
    return {
      filter: this.items
        .filter((item) => item.checked || item.name === this.selected)
        .map((item) => item.name)
        .join(),
    };
  }

  setModel(model: any): void {
    if (model && model.filter) {
      this.selected = model.filter.name || model.filter;
    }
  }

这样,筛选器就能够将从sessionStorage检索到的值与现有项进行比较,并按预期工作。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67268249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档