广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    权限树中Checkbox的操作[Asp.Net2.0]

    2018-04-08 09:02:52 次阅读 稿源:互联网
    广告

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

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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告