在做权限设置 现在希望如果系统管理员前面选中了下面的全部选中,也就是勾上了 如果系统管理没选全部不选择
如果系统管理菜单下有几个选中有几个没选这时就要求系统管理员也选上,这个时候系统管理选中的颜色要淡些 如果有整个代码的
请发上来,感激不尽 +-[]-系统管理 
 |  +-[]新建单位数据 
 |  +-[]用户属性 
 |  +-[]数据备份 
 |  +-[]数据恢复 
 |  +-[]数据联接 
 |  +-[]数据分离 

解决方案 »

  1.   


    function getTargetElement(evt) {
        var elem
        if (evt.target)
        {
            elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target
        } 
        else 
        {
            elem = evt.srcElement
        }
        return elem
    }
    function OnClientTreeNodeChecked(evt)
    {
        evt = (evt) ? evt : ((window.event) ? window.event : "");
        if(evt == "")
        {
        return;
        }
        var obj = getTargetElement(evt);
        var hasTreeNode = false;
        if(obj.tagName)
        {
        if (obj.tagName == "INPUT" && obj.type == "checkbox") {
            var treeNode = obj;
            while (obj.tagName != "TABLE")
            {
                obj = obj.parentNode;
            }
        var parentTreeDeep = obj.rows[0].cells.length;
        var parentTreeNode = obj.rows[0].cells[0];
        var oDiv = obj.parentNode;
        if( null == oDiv )
        {
            return;
        }
        if( 1 != oDiv.nodeType)
        {
        return;
        }
        var tables = oDiv.getElementsByTagName("TABLE");
        if( null == tables)
        {
        return;
        }
        var tableCount = tables.length;
        if(tableCount < 1)
        {
        return;
        } 
        for (i = 0; i < tableCount; i++)
        {
            if ( obj == tables[i] )
            {
                hasTreeNode = true;
                i++;
                if (tableCount == i )
                {
                    return;
                }
            }
            if (hasTreeNode)
            {
                var childTreeDeep = tables[i].rows[0].cells.length;
                if (childTreeDeep > parentTreeDeep)
                {
                    var cellTreeNode = tables[i].rows[0].cells[childTreeDeep - 1];
                    var inputs = cellTreeNode.getElementsByTagName("INPUT");
                    if( null != inputs)
                    {
                        inputs[0].checked = treeNode.checked;
                    }
                }
                else
                {
                    return;
                }
            }
        }
    }
    }
      

  2.   

    http://download.csdn.net/source/315730
    三种状态树形控件,满足你的要求
      

  3.   

    我觉得在问问题之前可以先百度一下或搜索一下原来是否有相关的帖子下面是我原来回答过别人。
    ------------------------------------------------------------
    js吧。。给你代码。我实现了的。。没什么问题。记得在Page_load时间写 
    this.TreeView1.Attributes.Add("onclick",   "CheckEvent()"); 
    JScript code
        //获取元素指定tagName的父元素
    function public_GetParentByTagName(element, tagName) 
    {
             var parent = element.parentNode;
             var upperTagName = tagName.toUpperCase();
             //如果这个元素还不是想要的tag就继续上溯
             while (parent && (parent.tagName.toUpperCase() != upperTagName)) 
             {
                 parent = parent.parentNode ? parent.parentNode : parent.parentElement;
             }
             return parent;
    }//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
    function setParentChecked(objNode)

             var objParentDiv = public_GetParentByTagName(objNode,"div");
             if(objParentDiv==null || objParentDiv == "undefined")
             {
                 return;
             }
             var objID = objParentDiv.getAttribute("ID");
             objID = objID.substring(0,objID.indexOf("Nodes"));
             objID = objID+"CheckBox";
             var objParentCheckBox = document.getElementById(objID);
             if(objParentCheckBox==null || objParentCheckBox == "undefined")
             {
                 return;
             } 
             if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
             return; 
             objParentCheckBox.checked = true;
             setParentChecked(objParentCheckBox);
    }//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
    function setChildUnChecked(divID)

             var objchild = divID.children;
             var count = objchild.length; 
             for(var i=0;i<objchild.length;i++)
             {
                 var tempObj = objchild[i];
                 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
                 {
                     tempObj.checked = false;
                 }
                 setChildUnChecked(tempObj); 
             }
    }//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
    function setChildChecked(divID)

             var objchild = divID.children;
             var count = objchild.length; 
             for(var i=0;i<objchild.length;i++)
             {
                 var tempObj = objchild[i];
                 if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
                 {
                     tempObj.checked = true;
                 }
                 setChildChecked(tempObj); 
             }
    }//触发事件
    function CheckEvent()
    {         var objNode = event.srcElement;          if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
             return;         if(objNode.checked==true)
             {
                 setParentChecked(objNode);
                 var objID = objNode.getAttribute("ID");
                 var objID = objID.substring(0,objID.indexOf("CheckBox")); 
                 var objParentDiv = document.getElementById(objID+"Nodes");
                 if(objParentDiv==null || objParentDiv == "undefined")
                 {
                     return;
                 } 
                 setChildChecked(objParentDiv);
             }
             else
             {
                 var objID = objNode.getAttribute("ID");
                 var objID = objID.substring(0,objID.indexOf("CheckBox")); 
                 var objParentDiv = document.getElementById(objID+"Nodes");
                 if(objParentDiv==null || objParentDiv == "undefined")
                 {
                     return;
                 } 
                 setChildUnChecked(objParentDiv);
             }
    }记得给分