我一直在应用程序中使用Ag-grid,并且正在尝试保存和还原表过滤器。 (我不使用Ag-Grid的企业版)。
我发现this link上显示了如何保存/恢复过滤器
我正在尝试存储过滤器状态,然后点击更新表的URL,然后还原过滤器
这是我保存和恢复过滤器状态的代码
saveState() {
window.colState = this.tableOptions.columnApi.getColumnState();
window.groupState = this.tableOptions.columnApi.getColumnGroupState();
window.sortState = this.tableOptions.api.getSortModel();
window.filterState = this.tableOptions.api.getFilterModel();
}
restoreState() {
this.tableOptions.columnApi.setColumnState(window.colState);
this.tableOptions.columnApi.setColumnGroupState(window.groupState);
this.tableOptions.api.setSortModel(window.sortState);
this.tableOptions.api.setFilterModel(window.filterState);
}
但是,刷新表数据后,我无法恢复到保存状态。我尝试致电onFilterChanged()
,但这似乎对我没有帮助。
我的代码看起来像this
需要帮助。 谢谢
答案 0 :(得分:0)
根据您的样品:
saveState() {
window.colState = this.gridColumnApi.getColumnState();
window.groupState = this.gridColumnApi.getColumnGroupState();
window.sortState = this.gridApi.getSortModel();
window.filterState = this.gridApi.getFilterModel();
this.http
.get(
"https://raw.githubusercontent.com/ag-grid/ag-grid/master/packages/ag-grid-docs/src/olympicWinnersSmall.json"
)
.subscribe(data => {
this.rowData = data;
//... restore the state here ...
setTimeout(()=>{
this.restoreState();
}, 100)
});
}
您可以询问为什么ag-grid
更改后rowData
不保持当前状态。
发生了,因为您不是在更新 现有 数据,而是在替换当前数据。
setRowData(newRowData)
等于rowData = newRowData
setRowData(行)将新行设置到网格中。
要节省更新操作的状态,您应该使用updateRowData
方法