当父节点的复选框被选中时,其子节点要自动级联全被选中,当父节点的一个子节点被选中时,其对应的父节点也要被级联选中
//判断是否有子结点被选中
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);
}
};
//增加checkchange监听
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);
//获取新增复选框树的值
function onItemClick(){
var checkedNodes = tree.getChecked();//tree必须事先创建好.这里要标识识获取那个treepanel的 id
var checkedIds = [];
for(var i=0;i<checkedNodes.length;i++)
{
if( checkedNodes[i].hasChildNodes())
{
//这里只是获取节点为子节点的id ,如果不需要可以删除。
}
else
{
checkedIds.push(checkedNodes[i].id);
}
}
return checkedIds.join(',');
};
//判断是否有子结点被选中
//级联选中父节点
};
//增加checkchange监听
tree.on('checkchange', function(node, checked) {
}, tree);
//获取新增复选框树的值
};