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 相关文章推荐
javascript 有趣而诡异的数组
Apr 06 Javascript
javascript实现倒计时N秒后网页自动跳转代码
Dec 11 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
js省市区级联查询(插件版&amp;无插件版)
Mar 21 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
js实现多张图片延迟加载效果
Jul 17 Javascript
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
vue+Element-ui实现登录注册表单
Nov 17 Javascript
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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python常用爬虫代码总结方便查询
2019/02/25 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Python多进程编程常用方法解析
2020/03/26 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
python 实现端口扫描工具
2020/12/18 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
商务日语毕业生自荐信
2013/11/23 职场文书
12岁生日演讲稿
2014/05/14 职场文书
建筑安全生产责任书
2014/07/22 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
获奖感言范文
2015/07/31 职场文书
导游词之晋城蟒河
2019/12/12 职场文书