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