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

    这里使用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()");

  • 相关阅读:
    python的装饰器
    闭包的概念
    py3.x和py2.x的区别
    python在WIN下CMD运行中文乱码及python 2.x python 3.x编码问题
    python 中文乱码问
    字符编码
    第03章 科学计算库Numpy
    《数据结构与算法》-哈希查找算法
    python寻找小于给定值的最大质数
    《数据结构与算法》-6-七大查找算法-1
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/484151.html
Copyright © 2011-2022 走看看