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 相关文章推荐
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
Jul 25 Javascript
Javascript Object.extend
May 18 Javascript
autoIMG 基于jquery的图片自适应插件代码
Mar 12 Javascript
映彩衣的js随笔(js图片切换效果)
Jul 31 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
详解用vue.js和laravel实现微信授权登陆
Jun 23 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
Apr 01 Javascript
javascript实现前端成语点击验证优化
Jun 24 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
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
shell的种类有哪些
2015/04/15 面试题
优秀团员事迹材料1000字
2014/08/20 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
实习介绍信模板
2015/01/30 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
导游词之西安骊山
2019/12/03 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
vue ref如何获取子组件属性值
2022/03/31 Vue.js