ExtJs 4 - 将记录从商店复制到treestore(grid to treegrid)

时间:2013-07-29 12:41:10

标签: extjs extjs4 extjs4.1 extjs4.2

首先:我正在使用ExtJs 4.2.1

我有两个网格:第一个从数据库(国家/地区)收集记录,第二个是树网格(应显示国家/地区,每个国家/地区应扩展城市列表)。

我想要实现的行为是,一旦你在第一个网格上选择一个记录(或多个记录),那些记录就会被复制到树形图中,因此我可以用更多的记录(城市)填充这些记录。

我从第一个网格获取记录:

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})

这应该显示一个国家/地区列表,在展开其中一个记录时,它应该再次显示该列表作为所选记录的子项。这不起作用:(

1 个答案:

答案 0 :(得分:1)

解决了它。我不喜欢这个解决方案,所以最终我在后端构建了整个东西但是它正在工作。

使用insert / appendChild作为Reimius说不起作用,因为我的记录不是节点所以我不得不循环遍历国家/地区阵列并使每个国家成为createNode()的节点。对于我创建的每个国家/地区节点,我遍历其城市,为每个节点创建一个节点,然后使用insertChild()将其与国家/地区相关联。

一切都完成后我用了:

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

“records”是这个巨大的节点创建的数组。