ExtJs选择框级联

ExtJS TreeGrid
添加监听事件

<Listeners>
    <Listener name="checkchange" function="checkLink"/>
</Listeners>

两种方法处理级联
第一种

function checkLink (node, checked) {
    cascade_childnode(node, checked);
}
// 树形选择:级联选中下级
function cascade_childnode(node, checked) {
    var cn = node.childNodes;
    //点击选中则所有子节点都选中
    if(!node.isRoot() && checked) {
        for (var i=0;i<cn.length;i++){
            if(!cn[i].isRoot()){
                if(!cn[i].checked){
                    cn[i].set('checked', checked);
                    if(cn[i].childNodes.length != '0'){
                        cascade_childnode(cn[i], checked);
                    }
                }
            }
        }
    //点击取消选中则所有子节点都取消选中
    }else if(!node.isRoot() && !checked){
        for (var i=0;i<cn.length;i++){
            if(!cn[i].isRoot()){
                if(!cn[i].checked){
                    cn[i].set('checked', checked);
                    if(cn[i].childNodes.length != '0'){
                        cascade_childnode(cn[i], checked);
                    }
                }
            }
        }
    }
    return false;
}

第二种,参考https://blog.csdn.net/a693593336/article/details/84284360

function checkLink (node, checked) {
    cascade_childnode(node, checked);
}
function cascade_childnode(node, checked) {
    //父节点的选中与取消
    if (checked == true) {
        node.checked = checked;
        pNode = node.parentNode;

        //通过循环将所有父节点选中
        for (; pNode != null; pNode = pNode.parentNode) {
            pNode.set("checked", true);
        }
    }else{//提示:当所有子节点取消父节点才能取消
        node.checked = checked;
        pNode = node.parentNode;
        var flag=false;
        for (; pNode != null; pNode = pNode.parentNode) {
            var children=pNode.childNodes;
            Ext.Array.each(children, function(node,index,fog) {
                if(node.get('checked')){
                    //同级节点还有选中的
                    flag=true;
                }
            });
            //如果同级节点还有选中的,那么跳出循环
            if(flag){
                break;
            }else{
                pNode.set("checked", false);
            }
        }
    }
    //当该节点有子节点时,将所有子节点选中取消
    if (!node.get("leaf") && !checked){
        node.cascade(function(node){
            node.set('checked', false);
        });
    }else if(!node.get("leaf") && checked){
        node.cascade(function(node){
            node.set('checked', true);
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值