首先:我正在使用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})
这应该显示一个国家/地区列表,在展开其中一个记录时,它应该再次显示该列表作为所选记录的子项。这不起作用:(
答案 0 :(得分:1)
解决了它。我不喜欢这个解决方案,所以最终我在后端构建了整个东西但是它正在工作。
使用insert / appendChild作为Reimius说不起作用,因为我的记录不是节点所以我不得不循环遍历国家/地区阵列并使每个国家成为createNode()的节点。对于我创建的每个国家/地区节点,我遍历其城市,为每个节点创建一个节点,然后使用insertChild()将其与国家/地区相关联。
一切都完成后我用了:
treegrid.getStore().setRootNode({ root: true, expanded: true, children: records})
“records”是这个巨大的节点创建的数组。