2

首先:我使用的是 ExtJs 4.2.1

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

我试图实现的行为是,一旦您在第一个网格上选择了一条记录(或多条记录),这些记录就会作为叶子复制到树形网格中,这样我就可以用更多的记录(城市)填充这些叶子。

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

grid.getSelectionModel().getSelection()

但我不知道如何将它们复制到树网格上。我尝试使用 setRootNode 并且可以在根节点的“原始”属性上看到记录,但无法在网格上显示它们。

我错过了什么?


更新:我已经设法让这些国家:

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

这应该显示一个国家列表,并且在扩展其中一个记录时,它应该再次将该列表显示为所选记录的子项。它不工作:(

4

1 回答 1

1

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

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

一切完成后,我使用:

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

“记录”是这种可怕的节点创建的数组。

于 2013-08-30T19:38:19.863 回答