AjaxPro部署成功
最近笔者在做项目时用到了权限树。因为想节省时间,就在网上Down些权限树的JS代码。
一下就是:

权限树
1
function public_GetParentByTagName(element, tagName)
2

{
3
var parent = element.parentNode;
4
var upperTagName = tagName.toUpperCase();
5
//如果这个元素还不是想要的tag就继续上溯
6
while (parent && (parent.tagName.toUpperCase() != upperTagName))
7
{
8
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
9
}
10
return parent;
11
}
12
13
//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
14
function setParentChecked(objNode)
15

{
16
var objParentDiv = public_GetParentByTagName(objNode,"div");
17
if(objParentDiv==null || objParentDiv == "undefined")
18
{
19
return;
20
}
21
var objID = objParentDiv.getAttribute("ID");
22
objID = objID.substring(0,objID.indexOf("Nodes"));
23
objID = objID+"CheckBox";
24
var objParentCheckBox = document.getElementById(objID);
25
if(objParentCheckBox==null || objParentCheckBox == "undefined")
26
{
27
return;
28
}
29
if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
30
return;
31
objParentCheckBox.checked = true;
32
setParentChecked(objParentCheckBox);
33
}
34
35
//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
36
function setChildUnChecked(divID)
37

{
38
var objchild = divID.children;
39
var count = objchild.length;
40
for(var i=0;i<objchild.length;i++)
41
{
42
var tempObj = objchild[i];
43
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
44
{
45
tempObj.checked = false;
46
}
47
setChildUnChecked(tempObj);
48
}
49
}
50
51
//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
52
function setChildChecked(divID)
53

{
54
var objchild = divID.children;
55
var count = objchild.length;
56
for(var i=0;i<objchild.length;i++)
57
{
58
var tempObj = objchild[i];
59
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
60
{
61
tempObj.checked = true;
62
}
63
setChildChecked(tempObj);
64
}
65
}
66
67
//触发事件
68
function CheckEvent(evt)
69

{
70
evt=evt?evt:(window.event?window.event:null);
71
var objNode = evt.srcElement=="undefine" ? evt.srcElement : evt.target;
72
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
73
return;
74
75
if(objNode.checked==true)
76
{
77
setParentChecked(objNode);
78
var objID = objNode.getAttribute("ID");
79
var objID = objID.substring(0,objID.indexOf("CheckBox"));
80
var objParentDiv = document.getElementById(objID+"Nodes");
81
if(objParentDiv==null || objParentDiv == "undefined")
82
{
83
return;
84
}
85
setChildChecked(objParentDiv);
86
}
87
else
88
{
89
var objID = objNode.getAttribute("ID");
90
var objID = objID.substring(0,objID.indexOf("CheckBox"));
91
var objParentDiv = document.getElementById(objID+"Nodes");
92
if(objParentDiv==null || objParentDiv == "undefined")
93
{
94
return;
95
}
96
setChildUnChecked(objParentDiv);
97
}
98
}
笔者主要改了一下第70行代码,可以支持IE,Firefox了。
调用(.cs)
this.TreeView1.Attributes.Add("onclick", "CheckEvent(event);");
仅共个人收藏之用.......
一下就是:
1
function public_GetParentByTagName(element, tagName) 2


{3
var parent = element.parentNode;4
var upperTagName = tagName.toUpperCase();5
//如果这个元素还不是想要的tag就继续上溯6
while (parent && (parent.tagName.toUpperCase() != upperTagName)) 7

{8
parent = parent.parentNode ? parent.parentNode : parent.parentElement;9
}10
return parent;11
}12

13
//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问14
function setParentChecked(objNode)15


{ 16
var objParentDiv = public_GetParentByTagName(objNode,"div");17
if(objParentDiv==null || objParentDiv == "undefined")18

{19
return;20
}21
var objID = objParentDiv.getAttribute("ID");22
objID = objID.substring(0,objID.indexOf("Nodes"));23
objID = objID+"CheckBox";24
var objParentCheckBox = document.getElementById(objID);25
if(objParentCheckBox==null || objParentCheckBox == "undefined")26

{27
return;28
} 29
if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")30
return; 31
objParentCheckBox.checked = true;32
setParentChecked(objParentCheckBox);33
}34

35
//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问36
function setChildUnChecked(divID)37


{ 38
var objchild = divID.children;39
var count = objchild.length; 40
for(var i=0;i<objchild.length;i++)41

{42
var tempObj = objchild[i];43
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")44

{45
tempObj.checked = false;46
}47
setChildUnChecked(tempObj); 48
}49
}50

51
//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问52
function setChildChecked(divID)53


{ 54
var objchild = divID.children;55
var count = objchild.length; 56
for(var i=0;i<objchild.length;i++)57

{58
var tempObj = objchild[i];59
if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")60

{61
tempObj.checked = true;62
}63
setChildChecked(tempObj); 64
}65
}66

67
//触发事件68
function CheckEvent(evt)69


{70
evt=evt?evt:(window.event?window.event:null);71
var objNode = evt.srcElement=="undefine" ? evt.srcElement : evt.target; 72
if(objNode.tagName!="INPUT" || objNode.type!="checkbox")73
return;74

75
if(objNode.checked==true)76

{77
setParentChecked(objNode);78
var objID = objNode.getAttribute("ID");79
var objID = objID.substring(0,objID.indexOf("CheckBox")); 80
var objParentDiv = document.getElementById(objID+"Nodes");81
if(objParentDiv==null || objParentDiv == "undefined")82

{83
return;84
} 85
setChildChecked(objParentDiv);86
}87
else88

{89
var objID = objNode.getAttribute("ID");90
var objID = objID.substring(0,objID.indexOf("CheckBox")); 91
var objParentDiv = document.getElementById(objID+"Nodes");92
if(objParentDiv==null || objParentDiv == "undefined")93

{94
return;95
} 96
setChildUnChecked(objParentDiv);97
}98
}笔者主要改了一下第70行代码,可以支持IE,Firefox了。
调用(.cs)
this.TreeView1.Attributes.Add("onclick", "CheckEvent(event);");
仅共个人收藏之用.......

浙公网安备 33010602011771号