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

2016-02-19 15:29 11 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享权限树中Checkbox的操作[Asp.Net2.0],希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - Web开发 】

  这里使用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;
  }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  //设置节点的父节点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;iobjchild.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;iobjchild.length;i++)
      {
          var tempObj = objchild[i];
          if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
          {
              tempObj.checked = true;
          }
          setChildChecked(tempObj);
      }
  }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  //触发事件
  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

来源:http://www.tulaoshi.com/n/20160219/1609747.html

延伸阅读
标签: vb
Visual Basic .Net目前操作MsAgent使用的COM组件名称是" Microsoft Agent Control 2.0"。这个COM组件并没有随着Windows系统一起发布,必须要下载、安装这个组件。"http://www.microsoft.com/msagent/downloads.htm"是微软提供的MsAgent组件的下载地址。要保证Visual Basic .Net能够成功操作MsAgent,必须要下载并安装四个程序,具体如下...
标签: ASP
       这里我想谈谈ASP.Net中对时间的处理       在ASP.Net中,M$为我们提供一种名为DateTime的对象,我们用这个对象来取得当前的时间。比如:       DateTime dt=DateTime.Now;       在上面的程序中我们取得了...
Functional Programming Functional Programming 不是一个新鲜的概念了,例如 C++ 虽然不是一门 Functional Programming 语言,但对它也有变通的支持——通过使用模板,函数对象(Function Objects)和运算符重载等手段,STL、Boost 等库提供了巧妙无比的、高性能的算法和功能。长久以来似乎 C++ 能实现的这些特性对于诸如 Java 和 C# 这些强调...
标签: Web开发
NHibernate中的Session,在我的理解似乎就相当于数据库中连接。因为它也有Open/Close的方法,我没有研究NHibernate的源码,不知道这种理解是否有误?我在网上搜了很多的关于Session的管理,大多都是在我需要数据库操作的时候,就OpenSession(),操作完后就CloseSession().这有点拟似如我们刚开始学习ADO.NET的时候,要Connection对象Open(),数据...
标签: ASP
  平 上面讨论了基本知识,然后说说权限许可的问题。FSO以创建它的用户帐户权限运行,换言之,如果有人从Internet 上访问你的页面,那么这个internet帐户就创建FSO。如果以administrator的身份登录计算机,并且登录页面,那么 administrator帐户就创建了FSO。这是非常重要的,因为一定的帐户拥有一定的权限,并且FSO需要一些权限从...

经验教程

42

收藏

93
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部