首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新ag-grid中的行数据时丢失的列过滤器

更新ag-grid中的行数据时丢失的列过滤器
EN

Stack Overflow用户
提问于 2017-07-13 11:22:25
回答 2查看 6.5K关注 0票数 9

我正试着在ag网格中预先配置一个列过滤器,一个简单的文本“等于”过滤器来显示与某些指定文本匹配的行,我已经做到了这一点。

但是,一旦我用一组新的行替换了模型数据,我的过滤器就消失了。

我尝试以两种方式更新我的模型数据:

  • 通过替换绑定rowData属性的值(我使用的是Vue.js)
  • 调用api.setRowData(newRows)

这两种情况都会导致列筛选器丢失。

是否有方法在不丢失列过滤器的情况下更新模型数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-13 15:19:34

在他们的文档中,它说您可以设置gridOptions属性deltaRowDataMode=true,然后使用api.setRowData(newRows)。这将将当前行数据与新数据进行比较,以查看哪些数据已更改并相应更新。如果没有此属性集,网格将删除所有设置,以确保重新启动。

票数 14
EN

Stack Overflow用户

发布于 2020-01-15 12:49:16

我也有同样的问题,这就是您可以在更新行数据之后保持应用数据过滤器。

  1. 订阅ag网格的rowDataChanged事件。
代码语言:javascript
运行
复制
(rowDataChanged)="onRowDataChanged($event)"
  1. onRowDataChanged中放置过滤逻辑
代码语言:javascript
运行
复制
// Get a reference to the name filter instance
const filterInstance = this.gridApi.getFilterInstance('fieldNameHere');
// Call some methods on Set Filter API that don't apply the filter
filterInstance.setModel({
    type: 'contains', // type of filter
    filter: 'yourData' // set filter on data
});
// Get grid to run filter operation again
this.gridApi.onFilterChanged();

onRowDataChanged将被触发两次,第一次是在网格清除所有内容时,第二次是在数据重新加载时。因此,您应该设置一些条件,以避免任何错误。

例如,我需要从刷新后加载的数据中设置过滤器--这就是我所做的:

代码语言:javascript
运行
复制
const filtered = this.rowData.filter(x => x.Id === this.Id);
if (filtered.length > 0) {
    // Get a reference to the name filter instance
    const filterInstance = this.gridApi.getFilterInstance('fieldNameHere');
    // Call some methods on Set Filter API that don't apply the filter
    filterInstance.setModel({
        type: 'contains', // type of filter
        filter: filtered[0].name // set filter on data
    });
    // Get grid to run filter operation again
    this.gridApi.onFilterChanged();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45079166

复制
相关文章

相似问题

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