我有棵带checkbox的tree,还有一个下来框,选择不同的值时,tree的根节点随之变化,
tree的loader是一样的 我试过改变根节点 再reload下:
var node = new Ext.tree.AsyncTreeNode({
id:"products",
text:"产品",
draggable:false
});
tree.setRootNode(node);
tree.getRootNode().reload();
tree.getRootNode().expand();
没有成功,
但是alert(tree.getRootNode().id);
是可以得到 products;
各位高人 有做个这种东西的吗?
怎么实现
[b]问题补充:[/b]
已经解决了 主要还是因为AsyncTreeNode有两个属性 一个是loading 一个是loaded;
我在测试的时候是直接在render后就立马执行 换根
loading还是为true 所以无法展开
最后解决:
var timer;
var f = function(){
if(tree.getRootNode().loaded){ // done loading
clearInterval(timer);
tree.getRootNode().attributes.id = '';
tree.getRootNode().reload();
}
}.createDelegate(this);
timer = setInterval(f, 200);
不过还是很感谢你
有机会多交流。。
多想你学习
本地测试过了:
[code="java"] var tree = new Tree.TreePanel({
useArrows: true,
autoScroll: true,
animate: true,
enableDD: true,
containerScroll: true,
border: false,
// auto create TreeLoader
dataUrl: 'get-nodes.php',
root: {
nodeType: 'async',
text: 'Ext JS',
draggable: false,
id: 'src'
},
listeners:{
'click':function(node,e){
if(node!=tree.getRootNode()){
tree.setRootNode({
nodeType: 'async',
text: node.text,
draggable: false,
id: node.id
});
tree.getRootNode().reload();
}
}
}
});[/code]
进一步优化下:
[code="java"]listeners:{
'click':function(node,e){
if(node!=tree.getRootNode()){
var newNodeCfg = {
nodeType: 'async'
};
Ext.applyIf(newNodeCfg,node.attributes);
tree.setRootNode(newNodeCfg);
tree.getRootNode().reload();
}
}
}[/code]
怎么样,解决了吧?