ag-grid文档提供了2个功能树数据和数据更新:
但我不明白我应该如何通过树数据执行数据更新
实施例: 我有以下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)再一次 - 整个网格将被重绘,它很邋and而且不酷。有用的方法
gridApi.updateRowData(rowDataTransaction: RowDataTransaction)
但我无法理解如何在RowDataTransaction
中描述树更改答案 0 :(得分:0)
使用TreeData功能时,看起来无法部分更新数据。
限制#1:InMemoryNodeManager包含禁止更新组集的保护(添加/删除/更新组):
public updateRowData(rowDataTran: RowDataTransaction): RowNodeTransaction {
if (this.isRowsAlreadyGrouped()) { return null; }
...
}
限制#2:RowRenderer.redrawRows不强制刷新重绘组的子项。因此,如果更改了子集,则网格将永远不会意识到它
这两种限制都会导致一种情况,即顶级群体既不能是部分更新者,也不能是他们的孩子。开发人员唯一的方法是 gridApi.setRowData(),它会重新加载整个网格。