JS控制TreeView的结点选择


Posted in Javascript onNovember 11, 2016

网上有很多控制TreeView的checkbox选中,但是自己尝试的时候,要么报错,要么不可行。以下这种写法是经过验证有效的,仅作参考,思维比较巧妙!

Tree:

<asp:TreeView ID="treeViewDapartment" runat="server" SelectedNodeStyle-BackColor="GrayText" onclick="javascript:NodeCheck();" 
     Font-Size="13px" ShowCheckBoxes="All" ShowLines="true" AutoGenerateDataBindings="false" ShowExpandCollapse="true" >
</asp:TreeView>

脚本:

<script language="javascript" type="text/javascript">
   //节点父节点选中子节点全选
   function NodeCheck() {  
      var o = window.event.srcElement;
      if (o.tagName == "INPUT" && o.type == "checkbox") //点击treeview的checkbox是触发 
      {
        var d = o.id; //获得当前checkbox的id; 
        var e = d.replace("CheckBox", "Nodes"); //通过查看脚本信息,获得包含所有子节点div的id 
        var div = window.document.getElementById(e); //获得div对象 
        if (div != null) //如果不为空则表示,存在自节点 
        {
          var check = div.getElementsByTagName("INPUT"); //获得div中所有的已input开始的标记 
          for (i = 0; i < check.length; i++) {
            if (check[i].type == "checkbox") //如果是checkbox 
            {
              check[i].checked = o.checked; //字节点的状态和父节点的状态相同,即达到全选 
            }
          }
        }
        else //点子节点的时候,使父节点的状态改变,即不为全选
        {
          var divid = o.parentElement.parentElement.parentElement.parentElement.parentElement; //子节点所在的div   
          var id = divid.id.replace("Nodes", "CheckBox"); //获得根节点的id 

          var checkbox = divid.getElementsByTagName("INPUT"); //获取所有子节点数
          var s = 0;
          for (i = 0; i < checkbox.length; i++) {
            if (checkbox[i].checked) //判断有多少子节点被选中 
            {
              s++;
            }
          }
          if (s == checkbox.length) //如果全部选中 或者 选择的是另外一个根节点的子节点 , 
          {                //  则开始的根节点的状态仍然为选中状态 
            window.document.getElementById(id).checked = true;
          }
          else {                //否则为没选中状态 
            window.document.getElementById(id).checked = false;
          }
        }

      }
  }
</script>

这个脚本的写法巧妙运用生成的页面源文件中checkbox与其子结点div之间的关系!

那么,只需要在注册一下触发事件即可:

protected void Page_Load(object sender, EventArgs e)
{  
    this.treeViewDapartment.Attributes.Add("onclick", "NodeCheck();"); 

}

特别感谢,雷云锋给予的指导!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
javascript操作cookie
Jan 17 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
node+express制作爬虫教程
Nov 11 #Javascript
html中鼠标滚轮事件onmousewheel的处理方法
Nov 11 #Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 #Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 #Javascript
通过扫描二维码打开app的实现代码
Nov 10 #Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 #Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 #Javascript
You might like
是否存在第一台收音机的说法
2021/03/01 无线电
php数组去重的函数代码
2013/02/03 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
JS中Location使用详解
2015/05/12 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
axios拦截设置和错误处理方法
2018/03/05 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python3.7.0的安装步骤
2018/08/27 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
J2EE中的容器都包括哪些
2013/08/21 面试题
大学生学业生涯规划
2014/01/05 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
组工干部对照检查材料
2014/08/25 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL