求教zTree使用后台数据执行添加父节点的问题
ztree吧
全部回复
仅看楼主
level 1
我用异步加载在后台从数据库中读取数据在前台生成一棵树:
如图:
然后我使用增加父节点之后树变化为:
请问这是什么原因?添加代码是zTree3.4的Demo
如下:
var newCount = 1;
function add(e) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
isParent = e.data.isParent,
nodes = zTree.getSelectedNodes(),
treeNode = nodes[0];
if (treeNode) {
treeNode = zTree.addNodes(treeNode, {id:(100 + newCount), pId:treeNode.id, isParent:isParent, name:"new node" + (newCount++)});
} else
{treeNode = zTree.addNodes(null, {id:(100 + newCount), pId:0, isParent:isParent, name:"new node" + (newCount++)});
}
if (treeNode)
{zTree.editName(treeNode[0]);
} else {alert("叶子节点被锁定,无法增加子节点");
}
};

2012年09月24日 02点09分 1
level 1
就是为什么新添加的父节点会读取数据库里面的节点信息呢,我有尝试了一下,先添加了两个子节点:
然后再添加父节点,结果是读取的数据库里的信息:
求教啊
2012年09月24日 02点09分 2
level 11
检查你的代码吧,利用调试工具一步步跟踪,很明显你是把原先节点的数据都一起添加进来了
2012年09月25日 02点09分 3
level 1
2012年09月26日 06点09分 4
level 1
那个我看了好久也没找到原因,
只是发现,当我刚点击完生成父节点的时候,是这样子的:
这个时候我点击清空子节点,是没有效果的,我在alert()里输出这个新增父节点的子节点也是未定义,但是当我点击展开这个父节点的时候,就变成这样了:
我一开始读取后台数据生成树使用的异步:
var setting = {
async: {
enable: true,//异步处理
type: "post",
contentType: "application/json",//提交参数方式,这里 JSON 格式,默认form格式
url: '<%=request.getContextPath()%>/resource.do?method=queryResource',//异步获取json格式数据的路径
autoParam: ["id","name"]//异步加载时需要提交的参数,多个用逗号分隔 },
真心是想不明白了,请问这是怎么回事啊
2012年09月26日 06点09分 5
level 1
那个我修改了一下新增节点的代码:
function add(e) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
isParent = e.data.isParent,
nodes = zTree.getSelectedNodes(),
treeNode = nodes[0];
if (treeNode)
{
treeNode = zTree.addNodes(treeNode, {id:(999999000 + newCount), pId:treeNode.id, isParent:isParent, name:"new node" + (newCount++) });
} else {
//treeNode = zTree.addNodes(null, {id:(999999000 + newCount), pId:0, isParent:isParent, name:"new node" + (newCount++)});
alert("请选择添加位置");
}
if (treeNode) {
//zTree.refresh();
zTree.editName(treeNode[0]);
if(treeNode[0].isParent){
zTree.selectNode(treeNode[0]); //疑问一
nodes1 = zTree.getSelectedNodes(); //疑问二
treeNode1 = nodes1[0];
if(treeNode1.children && treeNode1.children.length > 0){
alert("1");
}else{
alert("2"); //疑问三
}
zTree.removeChildNodes(treeNode1);
}
} else {alert("叶子节点被锁定,无法增加子节点");
}
};
2012年09月26日 07点09分 6
level 1
现在当我点击新增父节点的时候,
都会弹出疑问三的alert。也就是说treeNode1下面是没有子节点的。
然后关于疑问一,我想问,我在zTree的API上看addNodes的介绍,上面说,这个方法的返回值
treeNode是clone之后的,也就是说它并不是这棵树上真实的节点了?
嗯,疑问二我已经自己解决了。现在求树大帮忙看看疑问三啊,主要还是上面传的图,我一点开加号,就有了

2012年09月26日 08点09分 7
level 1
那个我在之前的帖子里看见有:
异步模式开启后,对于初始化后无子节点的父节点展开时会自动进行异步加载的。
这么一句话。这个,难道所有新加的无子节点的父节点都会获得async下面的传递的值?
如果是这样的话,那么这个问题就可以解释了,但是。。。。。。。。
那我该怎么传递初始的值呢
2012年09月26日 08点09分 8
level 1
难道说我理解错了,异步加载async是为了初始化后无子节点的父节点展开时使用的吗?
那。。。。。[拍砖][拍砖][拍砖]请问,树初始化的时候该怎么办啊,一瞬间我就晕了
2012年09月26日 09点09分 9
level 1
好吧,我一开始初始化树是用了ajax,对zTree的async理解错了,闹了好大的一个笑话
2012年09月26日 09点09分 10
楼主,你好,你最后是怎么解决的,我现在遇到和你一样的问题
2013年05月12日 12点05分
level 1
我也遇到同样的问题,求教楼主,……
2015年01月19日 01点01分 11
level 1
顶!(表示我也是这问题。)
2016年05月09日 07点05分 12
level 7
同路学习学习,也正准备用
2016年05月23日 22点05分 13
1