TreeView控件结合js树形选择 .
在一些系统管理,分配权限时可能经常需求构建树形菜单,然后选择部分功能点授权给用户
用下面的javascript脚本结合.net自带的树形控件,很方便的实现了多级选择。
<script language="javascript">
function window_onload()
{
document.all("treeMenu").attachEvent("oncheck",tree_oncheck);
}
//当树上的checkBox被选中时触发
function tree_oncheck()
{
//得到当前选中的node
var node=treeMenu.getTreeNode(treeMenu.clickedNodeIndex);
document.all("TreeIndex").value = node.getAttribute("ID");
//得到点击得节点checked的状态
var Pchecked=treeMenu.getTreeNode(treeMenu.clickedNodeIndex).getAttribute("checked");
//alert(Pchecked);
//设置所有子节点的状态(全部选中或全部不选中)
setcheck(node,Pchecked);
//点击子,所有的根选中
setParentCheck(node);
//设置传给服务器端的值
// getNodeCheckValue(tree);
}
//点击子,所有的根选中
function setParentCheck(node)
{
var tempNode;
//得到父节点
tempNode=node.getParent();
if(tempNode!=null)
{
//选中
tempNode.setAttribute("Checked","true");
//递归
setParentCheck(tempNode);
}
}
//设置子节点选中
function setcheck(node,Pc)
{
var i;
var ChildNode=new Array();
ChildNode=node.getChildren();
if(parseInt(ChildNode.length)==0)
{
return;
}
else
{
for(i=0;i<ChildNode.length;i++)
{
var cNode;
cNode=ChildNode[i];
cNode.setAttribute("Checked",Pc);
if(parseInt(cNode.getChildren().length)!=0)
{
setcheck(cNode,Pc);
}
}
}
}