Asp.Net2.0權(quán)限樹中Checkbox的操作
這里使用asp.net2.0的TreeView控件結(jié)合JavaScript實(shí)現(xiàn)權(quán)限樹的部分功能。
假設(shè)權(quán)限樹中有如下三條規(guī)則:
1、該節(jié)點(diǎn)可以訪問,則他的父節(jié)點(diǎn)也必能訪問;
2、該節(jié)點(diǎn)可以訪問,則他的子節(jié)點(diǎn)也都能訪問;
3、該節(jié)點(diǎn)不可訪問,則他的子節(jié)點(diǎn)也不能訪問。
代碼如下:
//獲取元素指定tagName的父元素
function public_GetParentByTagName(element, tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
//如果這個(gè)元素還不是想要的tag就繼續(xù)上溯
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
//設(shè)置節(jié)點(diǎn)的父節(jié)點(diǎn)Cheched——該節(jié)點(diǎn)可訪問,則他的父節(jié)點(diǎn)也必能訪問
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);
}
//設(shè)置節(jié)點(diǎn)的子節(jié)點(diǎn)uncheched——該節(jié)點(diǎn)不可訪問,則他的子節(jié)點(diǎn)也不能訪問
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);
}
}
//設(shè)置節(jié)點(diǎn)的子節(jié)點(diǎn)cheched——該節(jié)點(diǎn)可以訪問,則他的子節(jié)點(diǎn)也都能訪問
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);
}
}
//觸發(fā)事件
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()");
- ASP.NET2.0緩存(Cache)技術(shù)深入理解
- ASP.NET2.0中用Gridview控件操作數(shù)據(jù)的代碼
- ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解
- asp.net2.0實(shí)現(xiàn)郵件發(fā)送(測(cè)試成功)
- 在ASP.NET2.0中通過Gmail發(fā)送郵件的代碼
- ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用
- ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時(shí)需注意
- ASP.NET2.0服務(wù)器控件之自定義狀態(tài)管理
- ASP.NET2.0中數(shù)據(jù)源控件之異步數(shù)據(jù)訪問
- ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁
- ASP.NET2.0服務(wù)器控件之類型轉(zhuǎn)換器
- ASP.NET2.0數(shù)據(jù)庫入門之SQL Server
- ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource
- asp.net2.0如何加密數(shù)據(jù)庫聯(lián)接字符串
- ASP.NET2.0新特性概述
- ASP.NET2.0 WebRource,開發(fā)微調(diào)按鈕控件
- ASP.NET2.0服務(wù)器控件之Render方法
- asp.net2.0中css失效的解決方法
相關(guān)文章
ASP.NET?MVC使用jQuery的Load方法加載靜態(tài)頁面及注意事項(xiàng)
這篇文章介紹了ASP.NET?MVC使用jQuery加載靜態(tài)頁面的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09ASP.NET中repeater嵌套實(shí)現(xiàn)代碼(附源碼)
repeater嵌套經(jīng)常會(huì)在一些特殊效果顯示下會(huì)用到,新手朋友們可以詳細(xì)看下本文,希望對(duì)你有所幫助,代碼很整潔同時(shí)附有源碼2013-03-03Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺(tái)包
這篇文章主要為大家詳細(xì)介紹了Asp.NetCore1.1版本去掉project.json后如何打包生成跨平臺(tái)包 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06微信公眾平臺(tái)開發(fā)之發(fā)送文本消息.Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開發(fā)之發(fā)送文本消息.Net代碼,感興趣的小伙伴們可以參考一下2016-06-06asp.net下Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類
Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類!,使用asp.net開發(fā)多數(shù)據(jù)庫系統(tǒng)的朋友可以參考下。2010-10-10.NET?Core使用SkiaSharp實(shí)現(xiàn)快速生成二維碼
這篇文章主要為大家詳細(xì)介紹了.NET?Core如何使用SkiaSharp實(shí)現(xiàn)快速生成二維碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01asp.net mvc CodeFirst模式數(shù)據(jù)庫遷移步驟詳解
這篇文章主要為大家詳細(xì)介紹了asp.net mvc CodeFirst模式數(shù)據(jù)庫遷移步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10ASP.NET對(duì)HTML頁面元素進(jìn)行權(quán)限控制(二)
分三步實(shí)現(xiàn):標(biāo)出界面所要分配權(quán)限的元素、掃描界面獲取所要分配權(quán)限的元素信息、存入數(shù)據(jù)庫中,感興趣的朋友可以了解下2013-12-12