我正试着在ag网格中预先配置一个列过滤器,一个简单的文本“等于”过滤器来显示与某些指定文本匹配的行,我已经做到了这一点。
但是,一旦我用一组新的行替换了模型数据,我的过滤器就消失了。
我尝试以两种方式更新我的模型数据:
这两种情况都会导致列筛选器丢失。
是否有方法在不丢失列过滤器的情况下更新模型数据?
发布于 2017-07-13 15:19:34
在他们的文档中,它说您可以设置gridOptions
属性deltaRowDataMode=true
,然后使用api.setRowData(newRows)
。这将将当前行数据与新数据进行比较,以查看哪些数据已更改并相应更新。如果没有此属性集,网格将删除所有设置,以确保重新启动。
发布于 2020-01-15 12:49:16
我也有同样的问题,这就是您可以在更新行数据之后保持应用数据过滤器。
(rowDataChanged)="onRowDataChanged($event)"
onRowDataChanged
中放置过滤逻辑// 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
将被触发两次,第一次是在网格清除所有内容时,第二次是在数据重新加载时。因此,您应该设置一些条件,以避免任何错误。
例如,我需要从刷新后加载的数据中设置过滤器--这就是我所做的:
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();
}
https://stackoverflow.com/questions/45079166
复制相似问题