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()");
查看全文
相关阅读:
线程安全的简单理解
单链表 之 判断两链表是否交叉
React组件间的通信
input type=file美化
Array.prototype.slice.call(arguments)
ES5 数组方法every和some
nodejs学习之表单提交(1)
ES5 数组方法reduce
ES5 数组方法map
ES5 数组方法forEach
原文地址:https://www.cnblogs.com/freeliver54/p/880493.html
最新文章
Android Framework 学习(二):系统服务与应用服务
Android Framework 学习(一):Zygote进程
Android Handler 机制(二):Handler 机制深入探究问题梳理
Android Handler 机制(一):Handler 运行机制完整梳理
Android SurfaceView 堆叠展示问题探讨
WebRTC学习(三):WebRTC 信令交互&链接建立流程
RecyclerView 回收机制和资源释放问题探究
开源重站 Github 无法访问解决方案(临时)
Android 冷启动状态下Splash界面拉伸问题解决
Android View 相关知识梳理和总结
热门文章
地址手册
question
Springboot2新特性概述
java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.
Linux Shell下”>/dev/null 2>&1“相关知识说明
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)”
@validated 验证 List 参数在spring中
IntelliJ IDEA 报错:找不到包或者找不到符号
Spring MVC之LocaleResolver(解析用户区域)
接口设计六大原则
Copyright © 2011-2022 走看看