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 innerHTML、outerHTML、innerText、outerText的区别
Nov 24 Javascript
ext jquery 简单比较
Apr 07 Javascript
js 设置选中行的样式的实现代码
May 24 Javascript
jQuery timers计时器简单应用说明
Oct 28 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 Javascript
js实现开关灯效果
Mar 30 Javascript
js面向对象之实现淘宝放大镜
Jan 15 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
Angular2库初探
2017/03/01 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python简单实现enum功能的方法
2016/04/25 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python3 批量扫描端口的例子
2019/07/25 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
班组长工作职责
2013/12/25 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
学校献爱心活动总结
2014/07/08 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
2019各种承诺书范文
2019/06/24 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
python中数组和列表的简单实例
2022/03/25 Python