最佳JS实现treeview权限树遍历方法(当然,要以客户需求为主):
JS
1
function getParentByTagName(element,tagName)
2 {
3 var parent = element.parentNode;
4 var upperTagName = tagName.toUpperCase();
5 while (parent && (parent.tagName.toUpperCase() != upperTagName))
6 {
7 parent = parent.parentNode ? parent.parentNode : parent.parentElement;
8 }
9 return parent;
10 }
11
12 function setParentChecked(objNode)
13 {
14 var objParentDiv = getParentByTagName(objNode, " div " );
15 if (objParentDiv == null || objParentDiv == " undefined " )
16 return ;
17 var objID = objParentDiv.getAttribute( " ID " );
18 var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
19 if (objParentCheckBox == null || objParentCheckBox == " undefined " )
20 return ;
21 if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
22 return ;
23
24 // objParentCheckBox.checked = true;
25 if (objParentCheckBox.value == " 117 " )
26 {
27 // alert("ok");
28 objParentCheckBox. checked = false ;
29 }
30 else
31 {
32 if (objNode. checked = true ) objParentCheckBox. checked = true ;
33 }
34
35 setParentChecked(objParentCheckBox);
36 }
37 function setParentUnChecked(objNode)
38 {
39 var objParentDiv = getParentByTagName(objNode, " div " );
40 if (objParentDiv == null || objParentDiv == " undefined " )
41 return ;
42 var objID = objParentDiv.getAttribute( " ID " );
43 var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
44 if (objParentCheckBox == null || objParentCheckBox == " undefined " )
45 return ;
46 if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
47 return ;
48 if (objNode. checked = false ) objParentCheckBox. checked = false ;
49 objParentCheckBox. checked = false ;
50 setParentUnChecked(objParentCheckBox);
51 }
52
53 function setChildCheckedState(div,state)
54 {
55 var objchild = div.childNodes;
56 var count = objchild.length;
57 for (var i = 0 ;i < objchild.length;i ++ )
58 {
59 var tempObj = objchild[i];
60 if (tempObj.tagName == " INPUT " && tempObj.type == " checkbox " )
61 {
62 tempObj. checked = state;
63 }
64 // debugger;
65 setChildCheckedState(tempObj,state);
66 }
67 }
68 function TreeNodeChecked()
69 {
70 var objNode = window. event .srcElement;
71 if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
72 return ;
73 // debugger;
74 if (objNode. checked == true )
75 {
76 setParentChecked(objNode);
77 }
78 else
79 {
80 // setParentUnChecked(objNode);
81
82 }
83 var objID = objNode.getAttribute( " ID " );
84 var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
85 if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
86 return ;
87 setChildCheckedState(objParentDiv,objNode. checked );
88
89 }
90
91 </ script >
2 {
3 var parent = element.parentNode;
4 var upperTagName = tagName.toUpperCase();
5 while (parent && (parent.tagName.toUpperCase() != upperTagName))
6 {
7 parent = parent.parentNode ? parent.parentNode : parent.parentElement;
8 }
9 return parent;
10 }
11
12 function setParentChecked(objNode)
13 {
14 var objParentDiv = getParentByTagName(objNode, " div " );
15 if (objParentDiv == null || objParentDiv == " undefined " )
16 return ;
17 var objID = objParentDiv.getAttribute( " ID " );
18 var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
19 if (objParentCheckBox == null || objParentCheckBox == " undefined " )
20 return ;
21 if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
22 return ;
23
24 // objParentCheckBox.checked = true;
25 if (objParentCheckBox.value == " 117 " )
26 {
27 // alert("ok");
28 objParentCheckBox. checked = false ;
29 }
30 else
31 {
32 if (objNode. checked = true ) objParentCheckBox. checked = true ;
33 }
34
35 setParentChecked(objParentCheckBox);
36 }
37 function setParentUnChecked(objNode)
38 {
39 var objParentDiv = getParentByTagName(objNode, " div " );
40 if (objParentDiv == null || objParentDiv == " undefined " )
41 return ;
42 var objID = objParentDiv.getAttribute( " ID " );
43 var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
44 if (objParentCheckBox == null || objParentCheckBox == " undefined " )
45 return ;
46 if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
47 return ;
48 if (objNode. checked = false ) objParentCheckBox. checked = false ;
49 objParentCheckBox. checked = false ;
50 setParentUnChecked(objParentCheckBox);
51 }
52
53 function setChildCheckedState(div,state)
54 {
55 var objchild = div.childNodes;
56 var count = objchild.length;
57 for (var i = 0 ;i < objchild.length;i ++ )
58 {
59 var tempObj = objchild[i];
60 if (tempObj.tagName == " INPUT " && tempObj.type == " checkbox " )
61 {
62 tempObj. checked = state;
63 }
64 // debugger;
65 setChildCheckedState(tempObj,state);
66 }
67 }
68 function TreeNodeChecked()
69 {
70 var objNode = window. event .srcElement;
71 if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
72 return ;
73 // debugger;
74 if (objNode. checked == true )
75 {
76 setParentChecked(objNode);
77 }
78 else
79 {
80 // setParentUnChecked(objNode);
81
82 }
83 var objID = objNode.getAttribute( " ID " );
84 var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
85 if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
86 return ;
87 setChildCheckedState(objParentDiv,objNode. checked );
88
89 }
90
91 </ script >
后台递归遍历绑定treeview被选节点:
代码
1
///
<summary>
2 /// 判断TreeView被选节点
3 /// </summary>
4 /// <param name="tv"> TreeView名称 </param>
5 private void InitTreeChecked(TreeNode parentID, string menuID)
6 {
7
8 if (parentID.Value == menuID) // 根节点
9 {
10 parentID.Checked = true ;
11 // parentID = tvMenu.Nodes[0];
12 }
13 else
14 {
15 if (parentID.ChildNodes.Count != 0 )
16 {
17 // for (int i = 0; i < parentID.ChildNodes.Count; i++) // 一级子节点
18 foreach (TreeNode childID in parentID.ChildNodes)
19 {
20 // if (parentID.ChildNodes[i].Value.Trim().ToString() == menuID.Trim())
21 if (childID.Value.Trim().ToString() == menuID.Trim().ToString())
22 {
23 childID.Checked = true ;
24 return ;
25 }
26 else
27 {
28 // if (parentID.ChildNodes[parentID.ChildNodes.Count-1].Value.Trim().ToString())
29
30 parentID = childID;
31 this .InitTreeChecked(parentID, menuID);
32 }
33 }
34 }
35 else {}
36 }
37 }
2 /// 判断TreeView被选节点
3 /// </summary>
4 /// <param name="tv"> TreeView名称 </param>
5 private void InitTreeChecked(TreeNode parentID, string menuID)
6 {
7
8 if (parentID.Value == menuID) // 根节点
9 {
10 parentID.Checked = true ;
11 // parentID = tvMenu.Nodes[0];
12 }
13 else
14 {
15 if (parentID.ChildNodes.Count != 0 )
16 {
17 // for (int i = 0; i < parentID.ChildNodes.Count; i++) // 一级子节点
18 foreach (TreeNode childID in parentID.ChildNodes)
19 {
20 // if (parentID.ChildNodes[i].Value.Trim().ToString() == menuID.Trim())
21 if (childID.Value.Trim().ToString() == menuID.Trim().ToString())
22 {
23 childID.Checked = true ;
24 return ;
25 }
26 else
27 {
28 // if (parentID.ChildNodes[parentID.ChildNodes.Count-1].Value.Trim().ToString())
29
30 parentID = childID;
31 this .InitTreeChecked(parentID, menuID);
32 }
33 }
34 }
35 else {}
36 }
37 }
07年实现新添treeview权限的JS源码:
代码
function getParentByTagName(element,tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
function setParentChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
// objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
function setParentUnChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
objParentCheckBox. checked = false ;
setParentUnChecked(objParentCheckBox);
}
function setChildCheckedState(div,state)
{
var objchild = div.childNodes;
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 = state;
}
// debugger;
setChildCheckedState(tempObj,state);
}
}
function TreeNodeChecked()
{
var objNode = window. event .srcElement;
if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
return ;
// debugger;
if (objNode. checked == true )
{
setParentChecked(objNode);
}
else
{
setParentUnChecked(objNode);
}
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
function setParentChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
// objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
function setParentUnChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
objParentCheckBox. checked = false ;
setParentUnChecked(objParentCheckBox);
}
function setChildCheckedState(div,state)
{
var objchild = div.childNodes;
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 = state;
}
// debugger;
setChildCheckedState(tempObj,state);
}
}
function TreeNodeChecked()
{
var objNode = window. event .srcElement;
if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
return ;
// debugger;
if (objNode. checked == true )
{
setParentChecked(objNode);
}
else
{
setParentUnChecked(objNode);
}
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
07年JS实现更新treeview权限树(建议后台遍历treenodes):
代码
function getParentByTagName(element,tagName)
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
function setParentChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
// objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
function setParentUnChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
objParentCheckBox. checked = false ;
setParentUnChecked(objParentCheckBox);
}
function setChildCheckedState(div,state)
{
var objchild = div.childNodes;
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 = state;
}
// debugger;
setChildCheckedState(tempObj,state);
}
}
function TreeNodeChecked()
{
var objNode = window. event .srcElement;
if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
return ;
// debugger;
if (objNode. checked == true )
{
setParentChecked(objNode);
}
else
{
setParentUnChecked(objNode);
}
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
function SetTreeNodeChecked(objNode1)
{
var objNode = objNode1;
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
function GetYHQS(id)
{
PageMethods.CallYHQX(id,callsuccessed);
}
function callsuccessed(result)
{
// // 循环页面
// debugger;
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
objNode. checked = false ;
}
}
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
// 找到
// 比较
if (result.indexOf(objNode.title) !=- 1 )
{
objNode. checked = true ;
SetTreeNodeChecked(objNode);
}
}
}
}
function test()
{
debugger;
// 循环页面
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
// 找到
// 比较
objNode. checked = true ;
}
}
}
{
var parent = element.parentNode;
var upperTagName = tagName.toUpperCase();
while (parent && (parent.tagName.toUpperCase() != upperTagName))
{
parent = parent.parentNode ? parent.parentNode : parent.parentElement;
}
return parent;
}
function setParentChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
// objParentCheckBox.checked = true;
setParentChecked(objParentCheckBox);
}
function setParentUnChecked(objNode)
{
var objParentDiv = getParentByTagName(objNode, " div " );
if (objParentDiv == null || objParentDiv == " undefined " )
return ;
var objID = objParentDiv.getAttribute( " ID " );
var objParentCheckBox = document.getElementById(objID.replace( " Nodes " , " CheckBox " ));
if (objParentCheckBox == null || objParentCheckBox == " undefined " )
return ;
if (objParentCheckBox.tagName != " INPUT " && objParentCheckBox.type == " checkbox " )
return ;
// add
// if (objNode.checked=false) objPraentCheckBox.checked=false;
objParentCheckBox. checked = false ;
setParentUnChecked(objParentCheckBox);
}
function setChildCheckedState(div,state)
{
var objchild = div.childNodes;
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 = state;
}
// debugger;
setChildCheckedState(tempObj,state);
}
}
function TreeNodeChecked()
{
var objNode = window. event .srcElement;
if (objNode.tagName != " INPUT " || objNode.type != " checkbox " )
return ;
// debugger;
if (objNode. checked == true )
{
setParentChecked(objNode);
}
else
{
setParentUnChecked(objNode);
}
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
function SetTreeNodeChecked(objNode1)
{
var objNode = objNode1;
var objID = objNode.getAttribute( " ID " );
var objParentDiv = document.getElementById(objID.replace( " CheckBox " , " Nodes " ));
if (objParentDiv == null || typeof (objParentDiv) == " undefined " )
return ;
setChildCheckedState(objParentDiv,objNode. checked );
}
function GetYHQS(id)
{
PageMethods.CallYHQX(id,callsuccessed);
}
function callsuccessed(result)
{
// // 循环页面
// debugger;
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
objNode. checked = false ;
}
}
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
// 找到
// 比较
if (result.indexOf(objNode.title) !=- 1 )
{
objNode. checked = true ;
SetTreeNodeChecked(objNode);
}
}
}
}
function test()
{
debugger;
// 循环页面
for (i = 0 ;i < document.form1.length ;i ++ )
{
var objNode = document.form1.elements[i];
if (objNode.tagName == " INPUT " && objNode.type == " checkbox " )
{
// 找到
// 比较
objNode. checked = true ;
}
}
}
同样效果后台遍历代码如下:
代码
1
///
<summary>
2 /// 读取treeview上所有节点值
3 /// </summary>
4 /// <param name="id"></param>
5 ArrayList arry = new ArrayList();
6 private void GetAllValuesOfTreeview()
7 {
8 arry.Clear();
9 for ( int i = 0 ; i < tvMenu.CheckedNodes.Count; i ++ )
10 {
11 arry.Add(tvMenu.CheckedNodes[i].Value.Trim());
12 }
13 }
2 /// 读取treeview上所有节点值
3 /// </summary>
4 /// <param name="id"></param>
5 ArrayList arry = new ArrayList();
6 private void GetAllValuesOfTreeview()
7 {
8 arry.Clear();
9 for ( int i = 0 ; i < tvMenu.CheckedNodes.Count; i ++ )
10 {
11 arry.Add(tvMenu.CheckedNodes[i].Value.Trim());
12 }
13 }