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();
//如果這個元素還不是想要的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ā)送(測試成功)
- 在ASP.NET2.0中通過Gmail發(fā)送郵件的代碼
- ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用
- ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時需注意
- 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 StringBuilder的用法 實(shí)例代碼
StringBuilder實(shí)現(xiàn)的帶數(shù)字的排行榜效果實(shí)現(xiàn)代碼。2009-07-07
ASP.NET連接sql2008數(shù)據(jù)庫的實(shí)現(xiàn)代碼
這篇文章主要介紹了ASP.NET連接sql2008數(shù)據(jù)庫的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01
ASP.NET Core中快速構(gòu)建PDF文檔的步驟分享
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中快速構(gòu)建PDF文檔的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Entity Framework使用Code First模式管理存儲過程
本文詳細(xì)講解了Entity Framework使用Code First模式管理存儲過程的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
.Net?Core?Aop之IResourceFilter的具體使用
本文主要介紹了.Net?Core?Aop之IResourceFilter的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Asp.net中處理一個站點(diǎn)不同Web應(yīng)用共享Session的問題
Asp.net中處理一個站點(diǎn)不同Web應(yīng)用共享Session的問題...2006-09-09
數(shù)據(jù)庫開發(fā)總結(jié)(ADO.NET小結(jié))
數(shù)據(jù)庫開發(fā)總結(jié)(ADO.NET小結(jié))...2006-12-12

