Extjs4.x完美treepanel checkbox无限级选中与取消

时间:2023-03-09 18:26:34
Extjs4.x完美treepanel checkbox无限级选中与取消

注:当node选中, childNodes逐级全部选中. parentNode当子node全部选中时逐级自动选中,nodes未全部选中, parentNode逐级自动取消选中

在javascript中加入下面的代码,

/*向上遍历父结点*/
var nodep=function(node){
var bnode=true;
Ext.Array.each(node.childNodes,function(v){
if(!v.data.checked){
bnode=false;
return;
}
});
return bnode;
};

var parentnode=function(node){
if(node.parentNode != null){
if(nodep(node.parentNode)){
node.parentNode.set('checked', true);
}else{
node.parentNode.set('checked', false);
}
parentnode(node.parentNode);
}
};

/*遍历子结点 选中 与取消选中操作*/
var chd=function(node,check){
node.set('checked',check);
if(node.isNode){
node.eachChild(function (child) {
chd(child,check);
});
}
};

/*treepanel为tree名称*/
treepanel.on('checkchange', function (node, checked) {
if(checked){
node.eachChild(function (child) {
chd(child,true);
});
}else{
node.eachChild(function (child) {
chd(child,false);
});
}
parentnode(node); //进行父级选中操作
},treepanel);