`

ExtJS Tree刷新后只选择节点,不展开(二)

阅读更多

 ExtJS Tree刷新后只选择节点,不展开(二)

 

实例讲解:点击触发域(Ext.form.TriggerField)三角按钮,弹出树面板窗口,并将触发域中的内容在树面板中选中。

 

1.点击触发域获取触发域中的内容:

policyTg.onTriggerClick=policytrigFun;

function policytrigFun(e){
	policyWin.show();//注:窗口显示的时候,会去加载树!
	policys = policyTg.getValue();//获取触发域中的文字内容
	var parentNodes = policy_root.childNodes;//根节点下的目录
	if(parentNodes.length > 0) {//因为窗口刚刚展开的时候,树还未加载完,所以length = 0
		showCheckedPolicys(parentNodes);
	}
	else {
		loadPolicys();
	}
}

 

2.加载树,并执行加载成功事件的方法:

function loadPolicys(){
	ploader.on("load",function(treeLoader,node){//此时的node是root根节点——因为是一次性加载完的!!!
		showCheckedPolicys(node.childNodes);
	});
}

 

3.显示被勾选的内容:

/*显示被勾选的内容*/
function showCheckedPolicys(parentNodes){
	//先展开再收缩父节点,让子节点充分显示
	for (var i = 0; i < parentNodes.length; i++) {
		parentNodes[i].expand();//将各级进行展开
		parentNodes[i].collapse();
	}
	//再将所有节点的选择框给清楚掉
	for (var i = 0; i < parentNodes.length; i++) {
		var childNodes = parentNodes[i].childNodes;
		for (var j = 0; j < childNodes.length; j++) {
			childNodes[j].ui.toggleCheck(false);
		}
	}
	//将触发域中获取的相关内容字符串分割为一个数组
	var policyArr = policys.split(",");
	if(!policyArr || policyArr == ""){
		return;
	}
	//循环对比,相对应的进行勾选
	for (var i = 0; i < parentNodes.length; i++) {
		var childNodes = parentNodes[i].childNodes;
		for (var j = 0; j < childNodes.length; j++) {
			var policyText = childNodes[j].text;//将触发域的内容和树节点显示的内容进行对比
			for (var k = 0; k < policyArr.length; k++) {
				if(policyArr[k] == policyText) {
					childNodes[j].ui.toggleCheck(true);
				}
			}
		}
	}
}

 

注意:

1.将触发域内容和树节点显示的内容进行对比。

2.注意勾选TreeNodeUI的功能,不是TreePanel的功能,也不是TreeNode的功能

 

图示:

 

 

 

 

  • 大小: 13.1 KB
  • 大小: 1.9 KB
  • 大小: 2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics