Extjs 中 Treepanel 实现级联选中效果
在 treepanel 里添加以下代码即可实现级联选中效果
主要实现了以下效果:
1.点击父级批量设置所有子节点选中状态
2.点击当前节点寻找所有父级并设置选中状态
3.取消当前节点并取消所有子节点选中状态
4.取消当前节点根据需要取消上级节点的选中状态
1 listeners:{ 2 checkchange:function(node,checked,eOpts){ 3 4 // 批量设置子节点选中效果 5 function setChildChecked(pNode){ 6 pNode.set('checked',checked); 7 pNode.eachChild(function(child){ 8 setChildChecked(child); 9 }) 10 } 11 setChildChecked(node); 12 13 // 当前节点取消选中时 需要判断当前节点的父节点下的所有子节点是否都不是选中状态 14 function setParentCheckedFalse(currentNode){ 15 var parentNode = currentNode.parentNode, 16 isValid = true; 17 if(parentNode != null){ 18 if(checked == false){ 19 parentNode.eachChild(function (child) { 20 if(child.get('checked') != false){ 21 isValid = false; 22 return false; 23 } 24 }); 25 if(isValid){ 26 parentNode.set('checked',checked); 27 28 } 29 }else{ 30 parentNode.set('checked',true); 31 } 32 setParentCheckedFalse(parentNode) 33 } 34 } 35 setParentCheckedFalse(node); 36 } 37 }