2017-08-04 192 views
0

AG-電網文檔提供了2功能樹數據和數據更新:如何使用TreeData功能時更新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"}) 

我應該如何通知網格有關此更改?如果我打電話 gridApi.setRowData(tvSeries)又一次 - 整個網格將被重新繪製,它是草率的,不酷。有有用的方法

gridApi.updateRowData(rowDataTransaction: RowDataTransaction) 

,但我無法理解如何描述樹的變化RowDataTransaction

回答

0

看起來是不可能的使用TreeData功能時一部分更新數據。

限制#1:InMemoryNodeManager包含守衛,禁止更新羣(添加/刪除/更新組):

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

限制#2:RowRenderer.redrawRows不要強迫孩子刷新重繪組。因此,如果兒童子集更改,網格將永遠不知道它

這兩種限制都會導致一種情況,即頂級組無法部分更新,而不是其子級。開發者留下的唯一方法是gridApi.setRowData()它重新加載整個網格。