【问题标题】:ag grid row data is updating after reset the row data重置行数据后,ag网格行数据正在更新
【发布时间】:2021-10-06 12:00:49
【问题描述】:

我正在尝试在编辑后更新我在 ag 网格中的行数据。但是网格中的数据没有更新 我试过了

this.gridApi.setRowData(this.rowData);
this.rowData = this.countryData;
this.gridApi.refreshCells({ force: true });

但是这里没有一个选项有效。

这是我的 stackblitz 网址

https://stackblitz.com/edit/ag-grid-angular-hello-world-uh7vqn?file=src%2Fapp%2Fapp.component.ts

请帮助我重置 ag gird 中的数据的方法 单击重置按钮后,我喜欢用旧值刷新 agrid 即编辑后的值应该替换为原始值

红色标记的值应替换为旧值

【问题讨论】:

  • countryData 和 rowData 一样吗?你想刷新什么?
  • @DeepakJha 按下重置按钮后,我喜欢用旧值刷新网格。附上上面的截图
  • @RajeshKumar,看看我的回答。

标签: angular ag-grid


【解决方案1】:

rowDatacountryData 分配给相同的数据集。

因此,当您更改网格值时,countryData 也会被修改。

因此,当您第一次填充 countryData 时,您需要深度复制原始数据。尝试重置时,从countryData 的深度复制数据中填充rowData。这样,rowDatacountryData 之间就可以没有引用。

深拷贝的一种方法是对相同的数据进行字符串化和解析。喜欢:

this.countryData = JSON.parse(JSON.stringify(data));

工作演示: https://stackblitz.com/edit/ag-grid-angular-hello-world-qr5cfk?file=src%2Fapp%2Fapp.component.ts

【讨论】:

    【解决方案2】:

    https://stackblitz.com/edit/ag-grid-angular-hello-world-yr6yth?file=src%2Fapp%2Fapp.component.ts

    我想我遇到了你的问题,这是由于对象深拷贝。当您收到数据时,您实际上是在复制同一个对象两次,并且当两个对象的引用保持不变时,您会更改一个对象,认为它不会改变另一个对象,但它也会改变另一个对象。您需要为具有相同值的备份数据创建不同的对象,这应该可以工作

        this.getCountryList().subscribe(data => {
          this.rowData = JSON.parse(JSON.stringify(data));
          this.countryData = JSON.parse(JSON.stringify(data));
        });
    

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 2021-02-20
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多