【问题标题】:How update ag-grid data when TreeData feature is used使用 TreeData 功能时如何更新 ag-grid 数据
【发布时间】:2018-01-12 03:46:35
【问题描述】:

ag-grid 文档提供 2 个特性 Tree Data 和 Data Update:

但我不明白我应该如何对树数据执行数据更新

示例: 我有以下 javascript 数据:

const tvSeries = [
  {
    season: "Season 1",
    episodes: [
      {episode: "s1e1"},
      {episode: "s1e2"},
      {episode: "s1e3"},
      ]
  },
  {
    season: "Season 2",
    episodes: [
      {episode: "s2e1"},
      {episode: "s2e2"},
      {episode: "s2e3"},
      ]
  }
]

并通过

将其设置为网格
 gridApi.setRowData(tvSeries)

每个季节都会将行与子行分组 - 它的剧集

现在我想在第一季添加新剧集,所以我这样做了

tvSeries[0].episodes.push({episode: "s1e4"})

我应该如何通知网格这个变化?如果我打电话 gridApi.setRowData(tvSeries) 再一次 - 整个网格将被重新绘制,这很草率而且不酷。有好用的方法

gridApi.updateRowData(rowDataTransaction: RowDataTransaction)

但我不明白如何描述 RowDataTransaction 中的树变化

【问题讨论】:

    标签: javascript ag-grid


    【解决方案1】:

    使用 TreeData 功能时似乎无法部分更新数据。

    限制 #1:InMemoryNodeManager 包含禁止更新组集(添加/删除/更新组)的保护:

    public updateRowData(rowDataTran: RowDataTransaction): RowNodeTransaction {
        if (this.isRowsAlreadyGrouped()) { return null; }
        ...
    }
    

    限制 #2:RowRenderer.redrawRows 不会强制子项刷新重绘组。因此,如果子集发生更改,网格将永远不会意识到它

    这两个限制都会导致这样一种情况,即两个顶级组都不能部分更新,而不是他们的孩子。留给开发人员的唯一方法是 gridApi.setRowData(),它会重新加载整个网格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2021-12-06
      • 2020-06-03
      • 2020-11-07
      相关资源
      最近更新 更多