2013-07-29 79 views
1

首先:我使用ExtJS的4.2.1ExtJS的4 - 從商店的複製記錄treestore(電網的TreeGrid)

我有兩個網格:第一個從數據庫中收集記錄(國家)和第二個是treegrid(應該顯示國家和每個國家應該擴大城市名單)。

我試圖實現的行爲是,一旦你在第一個網格上選擇一個記錄(或多個記錄),這些記錄被複制到treegrid作爲葉子,然後我可以填充這些葉子更多的記錄(城市)。

我從第一格中的記錄有:

grid.getSelectionModel().getSelection() 

但我不知道如何複製它們的TreeGrid。我試過使用setRootNode,我可以看到根節點的「raw」屬性上的記錄,但我無法在網格上顯示它們。

我錯過了什麼?


更新:我已經設法獲得國家:

var records = grid.getSelectionModel().getSelection(); 
treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

現在我有問題加載子記錄。作爲一項測試,我嘗試使用相同的「國家記錄」來確保與模型沒有衝突。這是我已經試過:

var records = grid.getSelectionModel().getSelection(); 
for (record in records){ 
    records[record].expanded = true; 
    records[record].children = records; 
} 
treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

這應該顯示的國家名單和擴大的一個記錄時,應再次顯示列表,選定記錄的兒童。它不工作:(

+0

你解決了嗎? – Reimius

+0

是的,但解決方案太重了,所以我決定把所有東西都放在後端,然後把所有東西都發回來。 – nahl

回答

1

解決它。我不喜歡的解決方案,因此最終我建造在後端整個事情,但它工作。

使用INSERT /使用appendChild作爲Reimius說,由於沒有工作我的記錄不是節點,所以我必須循環遍歷國家數組,並使每個國家成爲createNode()的節點。對於我創建的每個國家/地區節點,我循環遍歷城市,爲每個節點創建一個節點,然後使用insertChild() 。它與國家

關聯一旦每種都做我用:

treegrid.getStore().setRootNode({ root: true, expanded: true, children: records}) 

「記錄」是這個怪異的節點創建的數組。

+0

這很好,你找到了一個解決方案。 – Reimius

+0

我忘了在這裏發佈它,因爲它太麻煩了,效率低下,我沒有想到它是一個「真正的」解決方案,但也許它指向某人正確的方向來建立有用的東西。 – nahl