_this.root1 = new Ext.tree.AsyncTreeNode({
text : '系统功能菜单配置',
id : '10',
icon : '../images/road/plan/toc_closed.gif',
expanded : true // 设置根节点默认是展开的
});
_this.params1 = 'fd_code=10'+"&name="+radiokBoxs;
_this.tree1 = new Ext.tree.TreePanel({
onlyLeafCheckable : false,
rootVisible : true,
applyTo :'abc',
border : false,
autoScroll : true,
root : _this.root1,
autoWidth:true,
autoHeight:true,
animate : true,// 是否动画
enableDD : false,// 是否支持拖放
containerScroll : true,
lines : true,
loader : new Ext.tree.TreeLoader({
// dataUrl : '../page/system/getRoleMenu.jsp?'+ decodeURI(_this.params1),
dataUrl : '../ws/rolemenu1/RoleMenuService1/getMenutTree1',
baseParams:{
role_id:radiokBoxs
},
requestMethod : 'POST',
baseAttrs : {
uiProvider : Ext.tree.TreeCheckNodeUI
},
listeners : {
beforeload : function(obj, n) {},
load : function(obj, node, response) {},
loadexception : function(obj, node, response) {}
}
})
});
/** 绑定节点选中事件 */
_this.tree1.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);
});
},_this.tree1);
};
//级联选中父节点
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.checked = checked; // 选中状态
// node.getUI().checkbox.indeterminate = checked;
node.getOwnerTree().fireEvent('check', node, checked);
var parentNode = node.parentNode;
if (parentNode !== null) {
parentCheck(parentNode, checked);
}
};
// 判断是否有子结点被选中
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;
};