关于树查询后没有父子关系的问题
ztree吧
全部回复
仅看楼主
level 6
前提:
树使用简单数据类型进行首次初始化.
步骤如下:
1:使用treeObj.getNodesByParamFuzzy(selectedVal,val,null) 返回node. 这是node应该也是简单数据.
2:$.fn.zTree.init($("#"+treeId), setting, node)进行初始化.
结果如下:
1:多次查询后数据重复.
2:数据无父子关系.但是属性值是对的.
代码如下:
var node = treeObj.getNodesByParamFuzzy(selectedVal,val,null);
$.fn.zTree.init($("#"+treeId), setting, node);
2012年04月23日 08点04分 1
level 11
你这么做是肯定有问题的!
1、getNodesBy... 的方法都仅仅是把得到的数据放在一个 Array 内便于用户遍历
2、因为内部数据都是嵌套格式,因此如果查到的某个节点是父节点,那么该节点数据同时会有 children 属性保存其全部子节点
综上所述,如果你直接把得到的数据去初始化 zTree ,其 children 内的数据都会成为节点。
解决方案:
为了不影响原先树的数据,请先将得到的节点数据进行 clone ,因为数据中的 function 和 {}等属行不用复制,所以采用浅clone即可,当然,如果有自己特殊的数据,请自行制作 clone 方法,这样完全可以在clone 的时候就过滤掉 children 属性;
如果clone 时需要保留 children,那么请在clone后自行删除children属性

2012年04月23日 08点04分 2
level 6
明白了. 因为你查出来的节点都是带有子节点数据的. 这样数据就重复了. delete children属性就可以实现数据查询不重复了.
现在还有一个新问题, 父子节点数据是对的, 但是却跑到根节点下面去了.
附图:
主要产品....应该是在工业源下的. 但是节点的pId是对的.
2012年04月23日 08点04分 3
level 11
这种需要检查你的数据规则,和修正问题。
例如: 如果父子关系是 A-B-C ;当你只选择了 A 和 C 之后,建立新的节点时,C的父节点ID 是指向 B 的,但在新树中 B 不存在,所以 C 就会和 A 变成同级的根节点。。。这个只能是你根据自己的需求进行数据修正。
2012年04月23日 10点04分 4
level 6
正如你所说. 是这样的情况. 看来还是不够仔细. 感谢zTreeAPI.
2012年04月23日 11点04分 5
1