tree loaddata

aj3423 2009-01-06 04:13:55
我的sourceTree是只有一个rootNode,然后只有一层叶子节点, rootVisible:false 隐藏root的

clearTree : function(tree) { // 这是删除树叶的函数
while(tree.root.hasChildNodes()) tree.root.removeChild(tree.root.firstChild);
},

var sourceTreeNodes = new Array();

sourceTree.loader.load(
sourceTree.root,
function(loader, root) { // on load event
for(var i=0; i<root.childNodes.length; i++) {
sourceTreeNodes.push(root.childNodes[i]);
}
}
);
这样在tree load 之后,把所有node 都添加到数组sourceTreeNodes里,
然后clearTree()删除所有叶子, 然后再
sourceTree.root.appendChild(sourceTreeNodes);
但是看不到任何叶子节点,请问是为什么, 解决后再给200分
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
showlie 2009-01-07
  • 打赏
  • 举报
回复
Extjs环境吗?
没看明白为什么load tree后再删除root的所有叶子,然后再添加load的数据到root中。root后添加的子节点跟原来有什么不同吗?
以下是Extjs环境下treepanel的例子:


var defConfig = {
loader:{//节点加载对象
clearOnLoad:true,//加载节点是否清除原节点
baseParams:{action:LoadAdminMenuTree},//连接参数,与url一起。
url:LoadAction,//节点处理页面,返回json形式的节点数据。与baseParams一起,如action.aspx?action=1
listeners:{
beforeload:function(treeLoader,node){//事件,在加载子节点前,获取当前节点的id
treeLoader.baseParams.id = node.id;
}
}
},
root:{//根节点
id:"0",
text:"Root"
},
tree:{
collapsed:false,//默认不展开
title:"Tree Panel",
rootVisible:false,//根节点是否隐藏
width:775,
height:500,
lines:true
}
};
var loader = new Ext.tree.TreeLoader(defconfig.loader);
var root = new Ext.tree.AsyncTreeNode(defconfig.root);
Ext.applyIf(defconfig.tree,{loader:loader,root:root});
return new Ext.tree.TreePanel(config.tree);
aj3423 2009-01-06
  • 打赏
  • 举报
回复
哦也 知道了 要这样

sourceTree.root.beginUpdate();
sourceTree.root.appendChild(sourceTreeNodes);
sourceTree.root.endUpdate();

52,781

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧