[转]权限树中Checkbox的操作[Asp.Net2.0]
生活随笔
收集整理的這篇文章主要介紹了
[转]权限树中Checkbox的操作[Asp.Net2.0]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://jeffamy.cnblogs.com/archive/2006/06/17/428387.html
原文如下:
這里使用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()");
原文如下:
這里使用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()");
總結
以上是生活随笔為你收集整理的[转]权限树中Checkbox的操作[Asp.Net2.0]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【新媒体】现阶段新闻聚合的玩法
- 下一篇: Winform开发之ADO.NET对象C