angular - Ag-grid 保存/恢复过滤器状态不起作用
问题描述
我一直在我的应用程序中使用 Ag-grid,我正在尝试保存和恢复表格过滤器。(我没有使用 Ag-Grid 的企业版)。
我找到了这个链接,它说明了如何保存/恢复过滤器
我正在尝试存储过滤器状态,然后点击更新表的 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()
给我似乎没有做这项工作。
我的代码看起来像这样
需要帮忙。谢谢
解决方案
根据您的样本:
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(rows)将新行设置到网格中。
要实现更新操作的状态保存,您应该使用updateRowData
方法
推荐阅读
- excel - 提取字符串中的预定义名称
- sql - Analysis Services 表格模型 - 按周分组的新计算表(使用 DAX)
- .htaccess - htaccess 重定向奇怪的 url 目标。如何解决这个问题?
- java - Unirest POST 发送无法识别的字段(io.vertx.core.json.DecodeException 错误)
- javascript - 在表单输入中显示来自对象的正确数据
- ios - 在带有 A-Frame 的 iOS chrome 71 上无法播放视频
- rest - 查询字符串和路径参数的正确格式是什么?
- html - 更改按钮字体大小也会更改 ios 上的宽度
- c# - 您如何检测在聚焦任何窗口时按下的 XButton1?
- java - 仅显示最近添加的对象的数组列表