zoukankan      html  css  js  c++  java
  • [转]权限树中Checkbox的操作[Asp.Net2.0]

    转自:http://jeffamy.cnblogs.com/archive/2006/06/17/428387.html

    原文如下:

    这里使用asp.net2.0的TreeView控件结合JavaScript实现权限树的部分功能。
      假设权限树中有如下三条规则:
      1、该节点可以访问,则他的父节点也必能访问;
      2、该节点可以访问,则他的子节点也都能访问;
      3、该节点不可访问,则他的子节点也不能访问。

    代码如下:
    //获取元素指定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);
        }

    }


    然后在page_load事件中将TreeView与js事件绑定上:
    this.TreeView1.Attributes.Add("onclick", "CheckEvent()");
  • 相关阅读:
    谷粒商城学习——P41vue组件化
    谷粒商城学习——P40计算属性、侦听器、过滤器
    谷粒商城学习——P38-39Vue-指令-单向绑定&双向绑定&v-onv-forv-if
    谷粒商城学习——P37vue基本语法——双向绑定、事件处理
    谷粒商城学习——P36Vue介绍与HelloWord
    谷粒商城学习——P35模块化
    谷粒商城学习——P34Promise异步编排
    Windows tcp/ip(CVE-2020-16898)远程代码执行蓝屏漏洞复现
    QQ群关系可视化3D查询搭建
    Skywalking 8.1 Docker 服务端部署
  • 原文地址:https://www.cnblogs.com/freeliver54/p/880493.html
Copyright © 2011-2022 走看看