怎么隐藏xloadtree的根节点

如何隐藏xloadtree的根节点
使用树形菜单进行权限设置是一个非常好的选择,目前手上有两套方案,一套是dhtmlxtree,一套是xloadtree,其中dhtmlxtree支持半选状态,就是节点下方的子节点没有全部选中情况下,根节点会显示灰色选中,视觉上比较好。
进行权限设置,不但要实现权限的设置,而且要回显设置好的权限,因此这里就存在着权限树的提交和显示即初始化问题。
先来说说两种树存在的问题:xloadtree,创建语句:
var tree = new WebFXCheckBoxLoadTree("根节点","get_board_privilege_tree_xml.action?roleId="+roleId);
生成时候会一并显示出根节点,然后再显示你构造的树形菜单,也就是比dhtmlxtree多了一层,这是其使用过程中的问题。等一下我要说怎么隐藏这一层。
dhtmltree,使用也较方便存在一个可以说是致命的缺陷,dhtmlxtree使用var objs =tree.getAllChecked();可以获得所有选中的节点,但是回显时候,只要父节点被选中的,那么子节点被默认选中,导致权限节点下的子节点约么被选中,约么全不被选中,无法精细化操作。
所以最后选择改造xloadtree,实现隐藏根节点;
webFXTreeConfig.setImagePath("./lib/images/tree_yellow/");
var tree = new WebFXCheckBoxLoadTree("根节点","get_board_privilege_tree_xml.action?roleId="+roleId);
我们通过alert(tree);可以发现,其每一个节点实际上是一组<div></div>,为此将低一级的根目录div截去就可以,方法如下:
var treeStr = String(tree);//先将tree对象转换成string
然后进行截取
//alert(treeStr.substring(treeStr.indexOf("</div>")+6));
document.getElementById("privBox").innerHTML =treeStr.substring(treeStr.indexOf("</div>")+6);//这里的数字六正好是</div>的长度
然后tree.expandAll();就可以展开菜单。完美解决