Ext树级联选中父节点和子节点

 

 

var treePanel = new Ext.tree.TreePanel({

        border:true, 
              autoScroll:true,
              animate:true,
              autoWidth:true,        
              enableDD:true,
              width:280,
              height:300, 
              containerScroll: true,
              loader: new Ext.tree.TreeLoader({
                      dataUrl:'../contCondition.do?action=getMatTree'
              })

    });

    var root = new Ext.tree.AsyncTreeNode({

            text: '物料类别',                  //节点名称
                   checked:false,
                   draggable:false,                  //是否支持拖动
                   id:'0'                      //节点id
          });

   treePanel.setRootNode(root);

 //判断是否有子结点被选中
         var childHasChecked = function(node)
        {
              var childNodes = node.childNodes;

        if(childNodes || childNodes.length>0){

        for(var i=0;i<childNodes.length;i++){

            if(childNodes[i].getUI().checkbox.checked)

                return true;

            }
              }
             return false;
         }

    //级联选中父节点
          var parentCheck = function(node ,checked){

        var checkbox = node.getUI().checkbox;

        if(typeof checkbox == 'undefined')

            return false;

        if(!(checked ^ checkbox.checked))

            return false;

        if(!checked && childHasChecked(node))

            return false;

        checkbox.checked = checked;
               node.attributes.checked = checked;
               node.getUI().checkbox.indeterminate = checked; //半选中状态

        node.getOwnerTree().fireEvent('check', node, checked);

        var parentNode = node.parentNode;

        if( parentNode !== null){

            parentCheck(parentNode,checked);

        }

    }

//增加checkchange监听

   treePanel.on('checkchange', function(node, checked) {

            var parentNode = node.parentNode;

            if(parentNode !== null) {   
                        parentCheck(parentNode,checked);   
                   }

           node.expand();

           node.attributes.checked = checked;     

           node.eachChild(function(child) 
                 {     

                  child.ui.toggleCheck(checked);    
                         child.attributes.checked = checked;     
                         child.fireEvent('checkchange', child, checked);

           });     

    }, treePanel);

 

    //获取新增复选框树的值
         function onItemClick(){

        var checkedNodes = treePanel.getChecked();//tree必须事先创建好.这里要标识识获取那个treepanel的 id

        var checkedIds = [];

        for(var i=0;i<checkedNodes.length;i++)
               {

                 if( checkedNodes[i].hasChildNodes())
                         {
                                //这里只是获取节点为子节点的id ,如果不需要可以删除。
                         }
                          else
                          {
                                checkedIds.push(checkedNodes[i].id);
                           }          

        }
                        return checkedIds.join(',');

    }; 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值