最后,在与extjs树面板,树存储和构建自定义阅读器进行斗争以阅读和转换pentaho数据2周之后,我设法将pentaho数据加载到extjs的treepanel中。
现在我的Tree面板无限加载相同的数据。 Treepanel看起来如下:
我的部分json数据如下所示:
{
{name: 'US', candidateCount: 3, children: []},
{name: 'India', candidateCount: 922, children: [
{name: 'Goa', candidateCount:124, children: []},
{name: 'Maharashtra', candidateCount: 43, children: [
{name: 'Pune', candidateCount: 3},
{name: 'Mumbai', candidateCount: 33},
{name: 'Kolhapur', candidateCount: 4},
{name: 'XXX', candidateCount: 3},
]}
]},
{name: 'UK', candidateCount: 1, children: []},
}
正如您在上图所示,在展开India
节点后,它再次加载了国家/地区级别的数据(即国家/地区名称US,uk,India,UK)。实际上我想显示州级数据,如马哈拉施特拉邦,果阿的数据。而不是那个treepanel再次加载相同的数据。
如何避免这种行为?我已将US,uk和India节点的leaf
属性设置为false
。
我尝试将Expanded
属性设置为true
但是树形图一次又一次地加载相同的节点,我的浏览器标签就被挂起了。
请告诉我如何避免这种情况?我希望树面板只加载一次数据。
编辑 - 此问题的解决方案
append
商店事件上添加侦听器,然后将leaf
值设置为true
来解决我希望成为叶子的节点,从而解决了这个问题。答案 0 :(得分:4)
我的treepanel和JSON数据遇到了同样的问题。我的treeStore看起来像这样:
proxy: {
type: 'ajax',
url: 'urlJson',
reader: {
type: 'json',
root: 'instanceList',
successProperty: 'success'
}
},
root:{
text: 'Root',
expanded: true
}
和JSON
{
"instanceList": [
{
"text": "Parent 1",
"instanceList": [
{
"class": "testing",
"id": 3,
"leaf": true,
"text": "Child 1"
}
]
},
{
"text": "Parent 2",
"instanceList": [
{
"class": "testing",
"id": 2,
"leaf": true,
"text": "Child 2"
},
{
"class": "testing",
"id": 1,
"leaf": true,
"text": "Child 3"
}
]
}
],
"instanceTotal": 1,
"success": true
}
我为“instanceList”更改了“children”,我的treepanel停止了无限循环,所以我想如果你改变“孩子”的“名字”?
答案 1 :(得分:2)
加载树木可能会欺骗。尝试在这些节点上设置loaded: true
。在开始点击之前,树是否正确加载了?
答案 2 :(得分:2)
将数据项设置为:
{
...
leaf: true
}
会阻止它。
答案 3 :(得分:1)
确保所有没有任何孩子的父母将“leaf”设为“true”或 有一个空“子节点”。
AND 所有子节点将“leaf”设置为“true”(正如Asken已经提到的那样)
答案 4 :(得分:1)
答案 5 :(得分:0)
正如Edd所说,如果您设置代理自定义rootProperty:' instanceList',您必须更改所有"孩子"在json中的那个属性,即' instanceList'。这是我的解决方案。