一次性加载简单数据,没有设置open,根节点设置open为true失败
ztree吧
全部回复
仅看楼主
level 4
sunrise52java 楼主
菜鸟又来发问了,请各位大虾帮帮忙~
如题:一次性加载简单数据,没有open,默认就是不展开了。
现根据其中name为“叶子节点224”的节点,展开其所在的路径。我下面这样做没有成功。该节点的上一级目录是展开的,但根目录没有展开。
点击“父节点2”前面的 + ,第一遍点击,没有任何反应,第二遍点击,可以展开。里面的“父节点22”是已经展开的,也就是说根节点目录设置展开失败。
点击“父节点2”
<SCRIPT type="text/javascript">
<!--
var setting = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: 0
}
}
};
var zNodes =[
{ id:1, pId:0, name:"父节点1 - 展开"},
{ id:11, pId:1, name:"父节点11 - 折叠"},
{ id:111, pId:11, name:"叶子节点111"},
{ id:112, pId:11, name:"叶子节点112"},
{ id:113, pId:11, name:"叶子节点113"},
{ id:114, pId:11, name:"叶子节点114"},
{ id:12, pId:1, name:"父节点12 - 折叠"},
{ id:121, pId:12, name:"叶子节点121"},
{ id:122, pId:12, name:"叶子节点122"},
{ id:123, pId:12, name:"叶子节点123"},
{ id:124, pId:12, name:"叶子节点124"},
{ id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
{ id:2, pId:0, name:"父节点2 - 折叠"},
{ id:21, pId:2, name:"父节点21 - 展开"},
{ id:211, pId:21, name:"叶子节点211"},
{ id:212, pId:21, name:"叶子节点212"},
{ id:213, pId:21, name:"叶子节点213"},
{ id:214, pId:21, name:"叶子节点214"},
{ id:22, pId:2, name:"父节点22 - 折叠"},
{ id:221, pId:22, name:"叶子节点221"},
{ id:222, pId:22, name:"叶子节点222"},
{ id:223, pId:22, name:"叶子节点223"},
{ id:224, pId:22, name:"叶子节点224"},
{ id:23, pId:2, name:"父节点23 - 折叠"},
{ id:231, pId:23, name:"叶子节点231"},
{ id:232, pId:23, name:"叶子节点232"},
{ id:233, pId:23, name:"叶子节点233"},
{ id:234, pId:23, name:"叶子节点234"},
{ id:3, pId:0, name:"父节点3 - 没有子节点"}
];
function openNode(node){
if(node){
node.open= true;
if(node.parentTId != null){
openNode(node.getParentNode());
}
}
}
$(document).ready(function(){
treeObj=$.fn.zTree.init($("#treeDemo"), setting, zNodes);
var node = treeObj.getNodeByParam("name", "叶子节点224", null);
console.log(node.length);
openNode(node.getParentNode());
});
//-->
</SCRIPT>
请各位帮帮忙,跪谢 ...
2015年03月02日 09点03分 1
level 4
sunrise52java 楼主
楼主解决了这一问题,但是我用的很笨的解决方式。希望有大虾能告知一下,为何js设置根节点open为true是没有根节点展开的效果呢?
在后台java没有给出节点open值的情况下,根据需要展开的叶子节点,找到其所有的根节点,用expandNode方法展开。
<SCRIPT type="text/javascript">
var openNodes = new Array();
var setting = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: 0
}
}
};
var zNodes =[
{ id:1, pId:0, name:"父节点1"},
{ id:11, pId:1, name:"父节点11"},
{ id:111, pId:11, name:"叶子节点111"},
{ id:112, pId:11, name:"叶子节点112"},
{ id:113, pId:11, name:"叶子节点113"},
{ id:114, pId:11, name:"叶子节点114"},
{ id:12, pId:1, name:"父节点12"},
{ id:121, pId:12, name:"叶子节点121"},
{ id:122, pId:12, name:"叶子节点122"},
{ id:123, pId:12, name:"叶子节点123"},
{ id:124, pId:12, name:"叶子节点124"},
{ id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
{ id:2, pId:0, name:"父节点2"},
{ id:21, pId:2, name:"父节点21"},
{ id:211, pId:21, name:"叶子节点211"},
{ id:212, pId:21, name:"叶子节点212"},
{ id:213, pId:21, name:"叶子节点213"},
{ id:214, pId:21, name:"叶子节点214"},
{ id:22, pId:2, name:"父节点22"},
{ id:221, pId:22, name:"叶子节点221"},
{ id:222, pId:22, name:"叶子节点222"},
{ id:223, pId:22, name:"叶子节点223"},
{ id:224, pId:22, name:"叶子节点224"},
{ id:23, pId:2, name:"父节点23"},
{ id:231, pId:23, name:"叶子节点231"},
{ id:232, pId:23, name:"叶子节点232"},
{ id:233, pId:23, name:"叶子节点233"},
{ id:234, pId:23, name:"叶子节点234"},
{ id:3, pId:0, name:"父节点3 - 没有子节点"}
];
function findOpenNodes(node){
if(node){
openNodes.push(node);
findOpenNodes(node.getParentNode());
}
}
$(document).ready(function(){
treeObj=$.fn.zTree.init($("#treeDemo"), setting, zNodes);
var node = treeObj.getNodeByParam("name", "叶子节点224", null);
findOpenNodes(node.getParentNode());
for(var i=0;i<openNodes.length;i++){
treeObj.expandNode(openNodes[i],true,false,false);
}
});
</SCRIPT>
2015年03月11日 11点03分 2
level 11
expandNode 方法展开 某个节点时, 他所有的父节点都会被展开的呀!!!! 不需要你自己去找他所有的父节点出来一个个展开的!!!!!
2015年03月12日 13点03分 3
好的,我知道了,一直以为只是展开当前节点。谢谢树哥~
2015年03月12日 15点03分
level 4
sunrise52java 楼主
实际操作后,分享一个小注意点。
如果找到的是某叶子节点,那么用expandNode 打开其“父节点”,则所有的父节点至跟节点就都打开了。直接打开叶子节点是没有用的。
2015年03月17日 03点03分 4
1