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()");
查看全文
相关阅读:
【刷题】UOJ #274 【清华集训2016】温暖会指引我们前行
【刷题】BZOJ 3669 [Noi2014]魔法森林
【刷题】BZOJ 2594 [Wc2006]水管局长数据加强版
(84)Wangdao.com第十八天_JavaScript 文档对象模型 DOM
(84)Wangdao.com第十八天_JavaScript Promise 对象
(83)Wangdao.com第十七天_JavaScript 定时器
(82)Wangdao.com第十六天_JavaScript 异步操作
(81)Wangdao.com第十六天_JavaScript 严格模式
(80)Wangdao.com第十六天_JavaScript Object 对象的相关方法
(79)Wangdao.com第十五天_JavaScript 对象的继承_prototype原型对象_封装_函数式编程
原文地址:https://www.cnblogs.com/freeliver54/p/880493.html
最新文章
J2EE
Cron
领域驱动设计概述
DDD领域驱动设计
devops
公钥私钥加密
80C51学习 蜂鸣器
80C51学习 流水灯
80C51学习 闪烁灯
解决若要安装 Microsoft Office 2010,需要MSXML 版本 6.10.1129的问题
热门文章
c语言 进程控制---创建进程 vfork()函数
C语言 进程控制---创建进程fork()函数
c语言 创建链表
c语言 内存管理
如何成为一个优秀的java程序员
解析java中volatile关键字
【刷题】BZOJ 2243 [SDOI2011]染色
【刷题】洛谷 P3950 部落冲突
【刷题】洛谷 P4234 最小差值生成树
【刷题】BZOJ 2157 旅游
Copyright © 2011-2022 走看看