【问题标题】:refreshCells Not working in Ag-Grid - Angular 2refreshCells 在 Ag-Grid 中不起作用 - Angular 2
【发布时间】:2017-02-25 19:23:10
【问题描述】:

我有一个 Angular 2 项目 (2.0.0-RC.4) 并正在运行 ag-grid (5.0.1)。

我正在尝试使用 refreshCells() 方法来刷新网格中的特定单元格,而不需要重置行。

我在 Ag-Grid 文档中看到了一个示例,它展示了如何使用 refreshCells()

https://www.ag-grid.com/javascript-grid-refresh/

我试图创建一个符合我需要的副本,但它不起作用。

网格拒绝刷新单元格。

  ChangeValue() {
    var updatedNodes = [];

    this.gridOptions.api.forEachNode((rowNode: RowNode) => {
      let data = rowNode;

      if(data.data.timestamp == "t") {
        data.data.asset *= 2;
        updatedNodes.push(rowNode);
      }
    });
    console.log(updatedNodes);
    this.gridOptions.api.refreshRows(updatedNodes);
    this.gridOptions.api.refreshView();
  }

我上面展示的方法链接到一个按钮,所以一旦我点击按钮它应该增加 rowNode 内与时间戳“t”匹配的资产。

更多细节,下面的钩子和构造函数用于将数据样本添加到网格并创建columnDefs。

  ngAfterViewChecked() {

    let dataSample: any[] = [
      {
        timestamp: "t",
        asset: 100
      }
    ]

    this.gridOptions.api.setRowData(dataSample);
    // Hide ag-grid overlay
    this.gridOptions.api.hideOverlay();
  }

  constructor() {
    this.columnDefs = [
      {
        headerName: 'Timestamp',
        field: 'timestamp'
      }, {
        headerName: 'Asset',
        field: 'asset'
      }
    ]
  }

问题是,一旦我单击按钮,ChangeValue() 方法就会运行,但由于某种原因没有更新单元格值。

【问题讨论】:

    标签: angular typescript ag-grid


    【解决方案1】:

    在 Ag-Grid 团队的帮助下,我找到了导致此问题的原因。

    我要感谢他们。

    refreshRows() 导致以触发器 ngAfterViewChecked() 结尾的视图重绘,这将重置网格中的数据。

    所以代码在循环中。

    【讨论】:

    猜你喜欢
    • 2019-04-13
    • 2021-02-09
    • 2018-10-26
    • 2015-09-23
    • 2018-06-01
    • 2020-07-11
    • 1970-01-01
    • 2019-01-21
    • 2021-01-03
    相关资源
    最近更新 更多