问题描述
- extjs treePanel.expandPath显示
-
我想通过treePanel.expandPath展开到1001010000这一级,但现在用expandPath只能显示到1xxx这一级。请问是什么原因??网上没有找到答案。都说treePanel.expandPath(/0000/1XXX/1001000000/1001010000,‘id’,function(){})是可以的。
我的tree是异步加载的。和这有关系吗??
解决方案
如果没有效果,那么expandPath肯定是只对已经加载的树有效果,异步的数据还没有下载下来,ext不会自动帮你加载其他未下载的数据的,你可以看这个函数的源代码,没有处理异步数据的。你可以自己添加callback,判断下是否有数据然后自己用同步的ajax加载数据
expandPath: function(path, field, separator, callback, scope) {
var me = this,
current = me.getRootNode(),
index = 1,
view = me.getView(),
keys,
expander;
field = field || me.getRootNode().idProperty;
separator = separator || '/';
if (Ext.isEmpty(path)) {
Ext.callback(callback, scope || me, [false, null]);
return;
}
keys = path.split(separator);
if (current.get(field) != keys[1]) {
// invalid root
Ext.callback(callback, scope || me, [false, current]);
return;
}
expander = function(){
if (++index === keys.length) {
Ext.callback(callback, scope || me, [true, current]);
return;
}
var node = current.findChild(field, keys[index]);
if (!node) {
Ext.callback(callback, scope || me, [false, current]);
return;
}
current = node;
current.expand(false, expander);
};
current.expand(false, expander);
}
解决方案二:
我的代码是这样的,用单击事件确发此方法:
function queryJoinCourse(){
var path ='/0000/2XXX/2004000000';
treePanel.expandPath(path,'id')
}
当只单击一次时,此treePanel.expandPath(path,'id')方法只展开了第一级,也就是父节点为0000的,其余的/2XXX/2004000000但不会执行。
但,若连续单击3次,则第一次单击则展开0000级,第二次单击,展开2xxx级,第三次单击则到了2004000000。
请问这种情况是什么原因?但,若我将treePanel.expandPath(path,'id')放到循环时里,它也是不会执行的。
不会写了,请问这种情况怎么解决,能给我写一下大概代码吗?
时间: 2024-11-10 00:59:27