首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

extjs兑现tree选中一个节点同时选中父节点和其子节点

2012-09-14 
extjs实现tree选中一个节点同时选中父节点和其子节点现在有多层节点的tree要实现 选择一个节点将其父节点

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);//递归调用           }       }   }); 

热点排行