ext treepanel 实现:全选,全部取消,子节点全部选中,父节点自动选中。
网上查到的,会发现不太好用。
分享代码。
网上查到的,会发现不太好用。
分享代码。
//省略构造树和树的加载器的代码
var INDEX_CATEGORY_CHECKING = false;
ADDRESS_NAMESPACE.tree_dept.on('checkchange', function(node, checked) {
if (!INDEX_CATEGORY_CHECKING) {
INDEX_CATEGORY_CHECKING = true;
checkchild(node,checked);
checkparent(node);
INDEX_CATEGORY_CHECKING=false;
}
});
function checkchild(node,checked){
node.eachChild(function(child)
{
//debugger;
if(child.childNodes.length>0){
checkchild(child,checked);//递归
}
//child.on('checkchange',function(node, checked){return false});
child.ui.toggleCheck(checked);
child.attributes.checked = checked;
//child.fireEvent('checkchange', child, checked);
});
}
function checkparent(node){
if(!node){return false;}
var parentNode = node.parentNode;
if(parentNode !== null) {
var isall=true;
parentNode.eachChild(function(n){
if(!n.attributes.checked){
isall=false;
}
});
if(isall){
parentNode.ui.toggleCheck(isall);
parentNode.attributes.checked = isall;
}else{
parentNode.ui.toggleCheck(isall);
parentNode.attributes.checked = isall;
}
}
checkparent(parentNode);//递归
};