extjs实现tree选中一个节点同时选中父节点和其子节点
现在有多层节点的tree 要实现 选择一个节点 将其父节点选择且将其所有的子节点选择,
但其一的话我现在是实现了 但是就是放在一起同时实现不了 算法太难了 主要是嵌套
选中父节点:
tree.on('checkchange', function(node, flag) {
// 所有父节点选中
if (node.parentNode.id != 'root') {// 判断是不是root节点
if (flag || tree.getChecked(id, node.parentNode) == "") {// 如果该节点的父节点还有子节点被选者则父节点继续选择
node.parentNode.ui.toggleCheck(flag);
node.parentNode.attributes.checked = flag;
node.parentNode.fireEvent('checkchange', node.parentNode, flag);//递归调用
}
}
});
选中子节点:
tree.on('checkchange', function(node, flag) {
// 所有子节点选中
if (node.hasChildNodes()) {
node.eachChild(function(child) {
child.ui.toggleCheck(flag);
child.attributes.checked = flag;
child.fireEvent('checkchange', child, flag);//递归调用
});
}
});
------解决方案--------------------
tree.on('checkchange', function(node, 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);
------解决方案--------------------
JScript code
tree.on('checkchange', function(node, flag) {
// 所有父节点选中
// Ext.log(node+"======"+node.parentNode);
// j=node;
if (node.parentNode.id != 'root') {// 判断是不是root节点
if (flag || tree.getChecked(id, node.parentNode) == "") {// 如果该节点的父节点还有子节点被选者则父节点继续选择
node.parentNode.ui.toggleCheck(flag);
node.parentNode.attributes.checked = flag;
node.parentNode.fireEvent('checkchange', node.parentNode, flag);//递归调用
}
}
});