EXT.net 1.x TreePanel的一个坑

Ext.net TreePanel有一个方法

drptreepanel.setChecked({ ids: idsarray, silent: true }); 

如果TreePanel里有1,3两个节点,ids内有一个5的节点,那么就会出问题,必须从新刷新页面。
将以上方法修改为

        function SetChecked(treepanel, arrayids) {
            var rootnode = treepanel.getRootNode();
            if (arrayids.contain(rootnode.id))
                rootnode.getUI().checkbox.checked = true;
            else
                rootnode.getUI().checkbox.checked = false;
            findchildnode1(rootnode, arrayids);
        }

        function findchildnode1(node, arrayids) {
            var childnodes = node.childNodes;
            for (var i = 0; i < childnodes.length; i++) {  //从节点中取出子节点依次遍历
                var rootnode = childnodes[i];

                if (rootnode.childNodes.length > 0) {  //判断子节点下是否存在子节点
                    findchildnode1(rootnode, arrayids);    //如果存在子节点  递归
                }
                console.log(rootnode.id);
                if (arrayids.contain(rootnode.id))
                    rootnode.getUI().checkbox.checked = true;
                else
                    rootnode.getUI().checkbox.checked = false;
            }
        }
        Array.prototype.contain = function (val) {
            for (var i = 0; i < this.length; i++) {
                if (this[i] == val) {
                    return true;
                }
            }
            return false;
        };

相应代码修改为

SetChecked(department,ids);

如果部分节点不可check,请自行增加如下判断语句,比如:

if(rootnode.checkbox!=undefined)
{
    if (arrayids.contain(rootnode.id))
        rootnode.getUI().checkbox.checked = true;
    else
        rootnode.getUI().checkbox.checked = false;
}

  

posted @ 2019-07-30 17:48  zhaogaojian  阅读(254)  评论(0编辑  收藏  举报