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下申明对象的几种方法小结
Oct 02 Javascript
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
Aug 19 Javascript
vuejs简单验证码功能完整示例
Jan 08 Javascript
使用Angular Cli如何创建Angular私有库详解
Jan 30 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 Javascript
实现高性能javascript的注意事项
May 27 Javascript
javascript实现弹幕墙效果
Nov 28 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 Javascript
JS实现百度搜索框
Feb 25 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中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
JQuery球队选择实例
2015/05/18 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
以一段代码为实例快速入门Python2.7
2015/03/31 Python
python常用知识梳理(必看篇)
2017/03/23 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
中科方德软件测试面试题
2016/04/21 面试题
单位活动策划方案
2014/08/17 职场文书
运动会加油稿100字
2014/09/19 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
办理护照工作证明
2014/10/10 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
js实现自动锁屏功能
2021/06/02 Javascript