ExtJs 4 - 将记录从存储复制到树存储(网格到树网格)

Posted

技术标签:

【中文标题】ExtJs 4 - 将记录从存储复制到树存储(网格到树网格)【英文标题】:ExtJs 4 - Copy records from store to treestore (grid to treegrid) 【发布时间】:2013-07-29 12:41:10 【问题描述】:

首先:我使用的是 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)

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

【问题讨论】:

你解决了吗? 是的,但是解决方案太重了,所以我决定把所有东西放在后端,然后把整个东西发回去。 【参考方案1】:

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

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

一切都完成后,我使用了:

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

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

【讨论】:

我忘记在此处发布它,因为它太烦人且效率低下,以至于我不认为它是一个“真正的”解决方案,但也许它为某人指明了正确的方向来构建有用的东西。

以上是关于ExtJs 4 - 将记录从存储复制到树存储(网格到树网格)的主要内容,如果未能解决你的问题,请参考以下文章

extjs 从第一个网格中选择记录并将所选记录复制到第二个网格

ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet

Extjs mvc 将记录添加到网格面板

Extjs:如何将存储记录用作网格的存储

ExtJS 4 - 如何加载带有来自表单的最新值的参数的网格存储?

ExtJs Gridpanel 存储刷新