Asp.Net2.0權限樹中Checkbox的操作
這里使用asp.net2.0的TreeView控件結合JavaScript實現(xiàn)權限樹的部分功能。
假設權限樹中有如下三條規(guī)則:
1、該節(jié)點可以訪問,則他的父節(jié)點也必能訪問;
2、該節(jié)點可以訪問,則他的子節(jié)點也都能訪問;
3、該節(jié)點不可訪問,則他的子節(jié)點也不能訪問。
代碼如下:
//獲取元素指定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;
}
//設置節(jié)點的父節(jié)點Cheched——該節(jié)點可訪問,則他的父節(jié)點也必能訪問
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);
}
//設置節(jié)點的子節(jié)點uncheched——該節(jié)點不可訪問,則他的子節(jié)點也不能訪問
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);
}
}
//設置節(jié)點的子節(jié)點cheched——該節(jié)點可以訪問,則他的子節(jié)點也都能訪問
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)技術深入理解
- ASP.NET2.0中用Gridview控件操作數(shù)據(jù)的代碼
- ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解
- asp.net2.0實現(xiàn)郵件發(fā)送(測試成功)
- 在ASP.NET2.0中通過Gmail發(fā)送郵件的代碼
- ASP.NET2.0+SQL Server2005構建多層應用
- ASP.NET2.0:頁面中鏈入的CSS、js文件帶中文時需注意
- ASP.NET2.0服務器控件之自定義狀態(tài)管理
- ASP.NET2.0中數(shù)據(jù)源控件之異步數(shù)據(jù)訪問
- ASP.Net2.0 GridView 多列排序,顯示排序圖標,分頁
- ASP.NET2.0服務器控件之類型轉換器
- 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服務器控件之Render方法
- asp.net2.0中css失效的解決方法
相關文章
ASP.NET連接sql2008數(shù)據(jù)庫的實現(xiàn)代碼
這篇文章主要介紹了ASP.NET連接sql2008數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下2015-01-01
Entity Framework使用Code First模式管理存儲過程
本文詳細講解了Entity Framework使用Code First模式管理存儲過程的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
.Net?Core?Aop之IResourceFilter的具體使用
本文主要介紹了.Net?Core?Aop之IResourceFilter的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Asp.net中處理一個站點不同Web應用共享Session的問題
Asp.net中處理一個站點不同Web應用共享Session的問題...2006-09-09
數(shù)據(jù)庫開發(fā)總結(ADO.NET小結)
數(shù)據(jù)庫開發(fā)總結(ADO.NET小結)...2006-12-12

