extjs4 tree check 级联选择
实现效果:
关键代码:
function changeAllNode(node, isCheck) { allChild(node, isCheck); allParent(node, isCheck); function allChild(nodec, isCheckc) { var chileNodes = nodec.childNodes; Ext.Array.each(chileNodes, function (nd) { if (nd.hasChildNodes()) { nd.set(‘checked‘, isCheck); allChild(nd, isCheckc); } else { nd.set(‘checked‘, isCheck); } }); } function allParent(nodep, isCheckp) { if (!isCheckp) { nodep.set(‘checked‘, isCheck); if (brothNodesIsTrue(nodep)) { } else { if (nodep.getDepth() > 1) { allParent(nodep.parentNode, isCheckp); } } } else { if (nodep.getDepth() > 1) { nodep.set(‘checked‘, isCheck); allParent(nodep.parentNode, isCheckp); } else { nodep.set(‘checked‘, isCheck); } } } function brothNodesIsTrue(node) { var flag = false; var brothNodes = node.parentNode.childNodes; Ext.Array.each(brothNodes, function (bn) { if (bn.get(‘checked‘)) { flag = true; return false; } }); return flag; } }
监听选择事件:
tree.on(‘checkchange‘, function (node, checked) { changeAllNode(node, checked) });