首先在TreePanel里面加一个事件checkchange
然后在事件里写入一下内容:
// checkchange事件
checkAllchild_click : function(node,checked){
var me=this;
if (node.data.leaf == false) {
if (checked) {
// 打开节点
node.expand();
// 遍历孩子
me.setChildNode(node.childNodes,checked);
} else {
node.expand();
me.setChildNode(node.childNodes,checked);
}
} else { // 单击叶子时候
if (checked) { // 未被选中时,取消父节点的选择状态
me.setParentNode(node,checked);
}
}
},
//反选父节点
setParentNode:function(node,checked){
node.set('checked', checked);
if(node.parentNode!=null){
this.setParentNode(node.parentNode, checked);
}
},
//选子节点
setChildNode: function (childNodes,checked){
var node;
for(var i=0;i<childNodes.length;i++){
node= childNodes[i];
node.set('checked', checked);
if(node.childNodes.length>0){
this.setChildNode(node.childNodes, checked);
}
}
}
最后注意一点复选框必须是自己后台传过来的,必须是自己写的,不能用工具画(比如sencha),否则无效。