Asp.Net2.0权限树中Checkbox的操作
Asp.Net2.0权限树中Checkbox的操作
发布时间:2016-12-29 来源:查字典编辑
摘要:这里使用asp.net2.0的TreeView控件结合JavaScript实现权限树的部分功能。假设权限树中有如下三条规则:1、该节点可以访...

这里使用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.net教程学习
热门asp.net教程学习
编程开发子分类