闫振

博客园 首页 联系 订阅 管理

今天在项目中遇到一个需求,页面加载的时候需要根据从后台数据库中查到的数据(一组treePabel的节点的ID),判断带有CheckBox的TreePanel中哪些呈现选中状态..我的解决方法是遍历整个TreePanel节点,取到每个节点的属性从而判断是否硬挨选中,baidu了半天都没发现有关于这方面的解决方案..最终经过不懈努力终于解决..舒坦~~

//tree为TreePanel的名称
        var nodevalue = ""; //定义一个全局变量,保存节点的属性(id或值等)
        function getRoot(tree) {
            var root = value.getRootNode(); //获取根节点
            getAllNodes(root); //用递归法获取所有子节点
            nodevalue = nodevalue.sunstring(0, nodevalue.length - 1);
            //alert(nodevalue);
            return nodevalue;
        }
        //获取所有的子节点   
        function getAllNodes(root) {
            var childnodes = root.childNodes;
            var child = "";
            for (var i = 0; i < childnodes.length; i++) { //从节点中取出子节点依次遍历
                child = childnodes[i];
                nodevalue += child.id + ",";//这里可以取节点里的任何属性
                if (child.hasChildNodes()) { //判断子节点下是否存在子节点
                    getAllNodes(nd); //如果存在子节点 递归
                }
            }
        }

这里在补充两个方法:(node为节点)设置带有CheckBok的TreePanel设置为选中状态
node.getUI().toggleCheck(true); //设置UI状态为选中状态
node.attributes.checked = true; //设置节点属性为选中状态