Extjs4.xtreePanel选中父节点时子节点全部选中,有子节点选中是父节点也选中
Extjs4.x好像没有提供treePanel的节点选中联动,今天从别的地方找了个方法整理处理以便以后使用!
1.两个重要的方法
//选中子节点
function setChildChecked(node,checked){ node.expand(); node.set({checked:checked}); if(node.hasChildNodes()){ node.eachChild(function(child) { setChildChecked(child,checked); }); } }
//选中父节点 function setParentChecked(node,checked){ node.set({checked:checked}); var parentNode = node.parentNode; if(parentNode !=null){ var flag = false; parentNode.eachChild(function(child) { if(child.data.checked == true){ flag = true; } }); if(checked == false){ if(!flag){ setParentChecked(parentNode,checked); } }else{ if(flag){ setParentChecked(parentNode,checked); } } } }
2.给 treePanel 添加如下事件,直接调用以上两个方法
"checkchange": function(node,checked,eOpts) { setChildChecked(node,checked); setParentChecked(node,checked); }
3.运行效果图