ExtJS复选框tree

复选框tree:选中父节点时自动选中子节点;选中子节点时自动选择父节点!
var tree = new Ext.tree.TreePanel({
	id:'tree',
    title: '系统菜单',
    height: 300,
    width: 600,
    useArrows:true,
    autoScroll:true,
    animate:true,
    enableDD:true,
    containerScroll: true,
    rootVisible: false,
    frame: true,
    root: {
        nodeType: 'async'
    },
    loader : new Ext.tree.TreeLoader( {
    	dataUrl: '../../jsp/system/getTree1.jsp',
    	listeners:{
            "beforeload":function(treeloader,node){
                treeloader.baseParams={
                	ven_code:Ext.getCmp('ven_code_id').getValue()
                };
            }
        }
	})
});

//选中父节点时自动选中子节点
tree.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);
	});
}, tree);
//判断是否有子节点被选中
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); 
    } 
}; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值