Javascript 使用TreeData功能时如何更新ag网格数据
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",
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; }
...
}