Ag-grid保存/恢复过滤器状态不起作用

时间:2018-10-01 06:28:35

标签: angular ag-grid

我一直在应用程序中使用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

需要帮助。 谢谢

1 个答案:

答案 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不保持当前状态。

发生了,因为您不是在更新 现有 数据,而是在替换当前数据。

From the description

  

setRowData(newRowData)等于rowData = newRowData

     

setRowData(行)行设置到网格中。

要节省更新操作的状态,您应该使用updateRowData方法