zoukankan
html css js c++ java
[转]权限树中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()");
查看全文
相关阅读:
北京初“探”,还是初“谈”
hadoop集群安装(多机,非伪集群)
iOS8下注冊push方式变更
Linux文件编辑命令具体整理
HDU 1260
二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
关于Linux静态库和动态库的分析
JavaScript特效之前进,后退(返回上一级)
具体解释Hibernate中的事务
iOS开发
原文地址:https://www.cnblogs.com/freeliver54/p/880493.html
最新文章
HDU 4293 Groups
开源力量公开课第三十期- 跟我一起玩转OpenStack
io 测试
JAVA之成员变量初始化
CentOS6.4 安装Mysql
angularjs与server交互
Android EditText 输入password是否可见
Spring IOC源代码具体解释之容器初始化
Mac环境下反编译apk
lzzuiaoykr
热门文章
Python的Django框架中的Cookie相关处理
谷歌技术面试要点(Google面试)(14年5月20日交大专场)
matplotlib画图实例:pyplot、pylab模块及作图參数
Android监听HOME键的最简单的方法
BZOJ 1016 JSOI 2008 最小生成树计数 Kruskal+搜索
MySQL5.7 linux二进制安装
cat /proc/cpuinfo 引发的思考--CPU 物理封装-物理核心-逻辑核心-超线程之间关系
Android 虚拟机学习总结Dalvik虚拟机介绍
HDU4876:ZCC loves cards
zookeeper无法启动"Unable to load database on disk"
Copyright © 2011-2022 走看看