Javascript 使用TreeData功能时如何更新ag网格数据

Javascript 使用TreeData功能时如何更新ag网格数据,javascript,ag-grid,Javascript,Ag Grid,ag网格文档提供了两个功能树数据和数据更新: 但我不明白我应该如何对树数据执行数据更新 例如: 我有以下javascript数据: const tvSeries = [ { season: "Season 1", episodes: [ {episode: "s1e1"}, {episode: "s1e2"}, {episode: "s1e3"}, ] }, { season: "Season 2",

ag网格文档提供了两个功能树数据和数据更新:

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

例如: 我有以下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"})
如果我打电话给grid,我应该如何通知grid此更改? setRowData(tvSeries)再一次-整个网格将被重新绘制,这是草率的,不酷的。有很多有用的方法

gridApi.updateRowData(rowDataTransaction: RowDataTransaction)

但我无法理解如何描述RowDataTransaction中的树更改。使用TreeData功能时,似乎无法部分更新数据

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

限制#2:RowRenderer.redrawRows不强制刷新重绘组的子级。所以,若子子集被更改,网格将永远不会意识到它

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

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