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);
     }
     
    }
   }
  }

posted @ 2011-09-28 22:47  绿荷  阅读(361)  评论(0编辑  收藏  举报