【原】TreeView+Checkbox级联操作(IE/FireFox测试通过)
2010-03-10 23:36
441 查看
TreeView+Checkbox级联操作
步骤1、前台页面拖放一个Treeview,将其ShowCheckBoxes属性设置为All
<asp:TreeView ID="tvCountry" runat="server" ShowCheckBoxes="All">
步骤2、在后台代码中添加Treeview的特性,使得Treeview控件在单击时触发JavaScript实现的级联逻辑
代码
1 <script type="text/javascript" language="javascript">
2 // TreeView节点触发事件
3 function Client_OnTreeNodeChecked(evt){
4 var obj = getCurrentNode(evt); // 根据浏览器判断事件
5 var treeNodeFound = false;
6 var checkedState;
7
8 if(obj.tagName == "INPUT" && obj.type == "checkbox"){
9 checkedState = obj.checked;
10 var curNode = getParentNode(obj);
11 changeNodeState(curNode,checkedState);
12 }
13 }
14
15 // 根据浏览器判断事件
16 function getCurrentNode(evt){
17 var obj;
18
19 if(window.event){// IE
20 obj = window.event.srcElement;
21 }else{// FireFox
22 obj = (evt?evt:(window.event?window.event:null)).target;
23 }
24
25 return obj;
26 }
27
28 // 取得父节点
29 function getParentNode(node){
30 do{
31 node = node.parentNode;
32 }while(node.tagName!="TABLE")
33 return node;
34 }
35
36 // 改变节点状态
37 function changeNodeState(node,state){
38 // 根据nextSibling属性判断处于同一树层级中紧跟的元素
39 if(node.nextSibling != null && node.nextSibling.tagName == "DIV"){
40 var cbArr = node.nextSibling.getElementsByTagName("INPUT");
41 for (var i = 0; i < cbArr.length; i++){
42 if (cbArr[i].type == "checkbox"){
43 cbArr[i].checked = state;
44 }
45 }
46 }
47
48 var flag = true;
49 var inputArr = node.parentNode.getElementsByTagName("INPUT");
50
51 if(state){
52 for(var i=0;i<inputArr.length;i++){
53 if (inputArr[i].type == "checkbox" && !inputArr[i].checked){
54 flag = false;
55 }
56 }
57 }else{
58 flag = true;
59 }
60
61 if(flag){
62 var parentArr = node.parentNode.previousSibling.getElementsByTagName("INPUT");
63 for(var i=0;i<parentArr.length;i++){
64 if(parentArr[i].type == "checkbox"){
65 parentArr[i].checked = state;
66 }
67 }
68 }
69 }
70 </script>
【运行效果】:
步骤1、前台页面拖放一个Treeview,将其ShowCheckBoxes属性设置为All
<asp:TreeView ID="tvCountry" runat="server" ShowCheckBoxes="All">
步骤2、在后台代码中添加Treeview的特性,使得Treeview控件在单击时触发JavaScript实现的级联逻辑
代码
1 <script type="text/javascript" language="javascript">
2 // TreeView节点触发事件
3 function Client_OnTreeNodeChecked(evt){
4 var obj = getCurrentNode(evt); // 根据浏览器判断事件
5 var treeNodeFound = false;
6 var checkedState;
7
8 if(obj.tagName == "INPUT" && obj.type == "checkbox"){
9 checkedState = obj.checked;
10 var curNode = getParentNode(obj);
11 changeNodeState(curNode,checkedState);
12 }
13 }
14
15 // 根据浏览器判断事件
16 function getCurrentNode(evt){
17 var obj;
18
19 if(window.event){// IE
20 obj = window.event.srcElement;
21 }else{// FireFox
22 obj = (evt?evt:(window.event?window.event:null)).target;
23 }
24
25 return obj;
26 }
27
28 // 取得父节点
29 function getParentNode(node){
30 do{
31 node = node.parentNode;
32 }while(node.tagName!="TABLE")
33 return node;
34 }
35
36 // 改变节点状态
37 function changeNodeState(node,state){
38 // 根据nextSibling属性判断处于同一树层级中紧跟的元素
39 if(node.nextSibling != null && node.nextSibling.tagName == "DIV"){
40 var cbArr = node.nextSibling.getElementsByTagName("INPUT");
41 for (var i = 0; i < cbArr.length; i++){
42 if (cbArr[i].type == "checkbox"){
43 cbArr[i].checked = state;
44 }
45 }
46 }
47
48 var flag = true;
49 var inputArr = node.parentNode.getElementsByTagName("INPUT");
50
51 if(state){
52 for(var i=0;i<inputArr.length;i++){
53 if (inputArr[i].type == "checkbox" && !inputArr[i].checked){
54 flag = false;
55 }
56 }
57 }else{
58 flag = true;
59 }
60
61 if(flag){
62 var parentArr = node.parentNode.previousSibling.getElementsByTagName("INPUT");
63 for(var i=0;i<parentArr.length;i++){
64 if(parentArr[i].type == "checkbox"){
65 parentArr[i].checked = state;
66 }
67 }
68 }
69 }
70 </script>
【运行效果】:
![](http://images.cnblogs.com/cnblogs_com/zhujiahai/TreeviewCheckbox级联/级联效果.jpg)
相关文章推荐
- 【原】TreeView+Checkbox级联操作(IE/FireFox测试通过)
- Asp.Net 2.0 TreeView的Checkbox级联操作(转贴)
- flash上加链接a标签--IE,FireFox测试通过
- 最简单的Asp.Net 2.0 TreeView的Checkbox级联操作
- 带Checkbox的TreeView(一) 完美兼容IE、Firefox ,在js中添加了getCurrentNode(evt)方法,注册方法变为TreeView1.Attributes.Add("onclick", "CheckEvent
- 使用 JavaScript 实现 XMLHttpRequest,在IE,FireFox 上测试通过!
- ASP.NET中TreeView On Demand载入和CheckBox级联操作(转)
- 使用 JavaScript 实现 XMLHttpRequest,在IE,FireFox 上测试通过
- 监控复制事件,已经在IE,firefox,maxton测试通过
- Asp.Net 2.0 TreeView的Checkbox级联操作
- iframe高度自动调整(通过IE,firefox,opera测试)
- Asp.Net 2.0 TreeView的Checkbox级联操作
- ASP.NET2.0下利用javascript实现TreeView中的checkbox全选 (支持IE/firefox)
- 该效果在firefox和IE中测试通过.拖动然后就布局自动保存到数据库里了.
- 禁止浏览器后退的一种实现方法,在IE, Firefox, Safari, Chrom 和 Opera上测试通过
- jquery操作iframe(齐全版,经IE6&IE6+、firefox、chrome测试通过)
- jquery操作iframe(齐全版,经IE6&IE6+、firefox、chrome测试通过)
- 转载:javascript 获取 浏览器body高宽等 (兼容多个浏览器:IE Firefox google apple 测试通过)
- Ifrme自适应高度的问题 IE FireFox Opera Netscape下均测试通过