问题描述
js比较菜,请问下哪位大神写过extjs4.2的三态树给个源码,或者给个思路,貌似extjs3.x是通过重写Ext.ux.TreeCheckNodeUI控件,那时4貌似没有这个类啊。
解决方案
Extjs4在Ext.tree.Panel中对带有checkbox的树的节点的选择上和extjs3不一样,主要是在tree上添加checkchange事件left_tree.on('checkchange',function(node, checked){checkboxSelected(node,checked);}); function checkboxSelected(node,checked){ setChildChecked(node,checked); setParentChecked(node,checked); }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(childnode) { if(childnode.get('checked')){ flag = true; } }); if(checked == false){ if(!flag){ setParentChecked(parentNode,checked); } }else{ if(flag){ setParentChecked(parentNode,checked); } } } }