Ext.net TreePanel有一个方法
drptreepanel.setChecked({ ids: idsarray, silent: true });
如果TreePanel里有1,3两个节点,ids内有一个5的节点,那么就会出问题,必须从新刷新页面。
将以上方法修改为
function SetChecked(treepanel, arrayids) { var rootnode = treepanel.getRootNode(); if (arrayids.contain(rootnode.id)) rootnode.getUI().checkbox.checked = true; else rootnode.getUI().checkbox.checked = false; findchildnode1(rootnode, arrayids); } function findchildnode1(node, arrayids) { var childnodes = node.childNodes; for (var i = 0; i < childnodes.length; i++) { //从节点中取出子节点依次遍历 var rootnode = childnodes[i]; if (rootnode.childNodes.length > 0) { //判断子节点下是否存在子节点 findchildnode1(rootnode, arrayids); //如果存在子节点 递归 } console.log(rootnode.id); if (arrayids.contain(rootnode.id)) rootnode.getUI().checkbox.checked = true; else rootnode.getUI().checkbox.checked = false; } } Array.prototype.contain = function (val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) { return true; } } return false; };
相应代码修改为
SetChecked(department,ids);