程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 權限樹中Checkbox的操作[Asp.Net2.0]

權限樹中Checkbox的操作[Asp.Net2.0]

編輯:.NET實例教程

這裡使用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()");
  
  
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved