由于vs 自带的treeview控件,显示出checkbox以后,点checkbox的时候不能触发任何事件,所以在后台也不能控制
只有给checkbox添加一个回发事件:

function postBackObject()
{   
    var o = window.event.srcElement;
    if (o.tagName == "INPUT" && o.type == "checkbox") //点击treeview的checkbox是触发
    {
              __doPostBack("","");
     }
}

//TreeView 添加一个点击事件
  <asp:TreeView ID="tvGrant" runat="server" Height="322px" ImageSet="Arrows" ShowCheckBoxes="All"
                    Width="194px" οnclick="postBackObject()">

添加完以后,当选择checkbox的时候将回发一次,接着就只要在后台的TreeNodeCheckChanged()里面判断一下
就可以达到全选的目的了.但是这个每次选择的时候,都要刷新页面.
为了不刷新 ,就在前台写代码控制:

function postBackByObject()
{   
    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;
        }

      }    

    } 

}

添加上面的代码后,后台不要写代码控制了,页面也不刷了,同样达到多选的目的.希望对大家有点帮助!!!!

转载于:https://www.cnblogs.com/ltenai/archive/2007/06/28/798822.html

关于treeview中的checkbox的全选问题相关推荐

  1. GridView中实现CheckBox的全选

    用服务器端的方法: 在页面上放一个gridview控件,配置好数据源,编辑列,添加一个模版列,再编辑模版,放入一个checkbox控件.代码如下: <asp:GridView ID=" ...

  2. 在项目中学习.NET的JQuery CheckBox方法(全选、取消全选、其他)

    一.在项目中遇到的CheckBox的全选和取消全选以及其他等解决方案如下: // 对全选和取消全选的事件 $("#CheckAll").click(function () {    ...

  3. JQuery实现复选框CheckBox的全选、反选、提交操作

    对复选框最基本的应用,就是对复选框进行全选.反选和提交等操作.复杂的操作需要与选项挂钩,来达到各种级联反应效果. [示例]使用Jquery实现复选框CheckBox的全选.反选.提交操作. (1)创建 ...

  4. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  5. 实现checkbox的全选和取消

    如果点击全选就把所有选项全选上,这个我们常用... View Code 1 <script type="text/javascript"> 2 /*实现checkbox ...

  6. JS如何控制checkbox的全选反选

    JS代码: 1 <script language="javascript" type="text/javascript"> 2 3 //转载请保留出 ...

  7. jQuery实现checkbox的全选反选方法

    checkbox的全选.取消全选.选中所有奇数.选中所有偶数等方法的实现代码如下: 注意jQuery的版本:jQuery1.6增加了prop,1.6之前的还是使用attr()和removeAttr() ...

  8. 微信小程序checkbox的全选以及所有checkbox选中之后的全选

    微信小程序checkbox的全选以及所有checkbox选中之后的全选 微信小程序checkbox的全选以及所有checkbox选中之后的全选 第一次写,软件都不懂,直接把代码拷过来了 模板 WXML ...

  9. ListView中嵌套checkbox实现多选

    我现在要实现一个多选的ListView,当选择ListView中的checkbox的时候,可以将选中的多个checkbox所代表的值保存到数据库中!哪位高手做过类似的东西,给小弟指教指教,十分感谢! ...

  10. 实现gridview中checkbox的全选和反选,以及固定gridview列字符串的长度,多余的以...表示...

    下面是源码: 先添加js和CSS <script type="text/javascript" language="javascript">     ...

最新文章

  1. GitHub的十大JavaScript项目
  2. java源文件到字节码的命令,Java的源代码文件的扩展名是 ,Java源文件通过编译命令编译成的字节码文件(平台无关)的扩展名是 。...
  3. OpenCV自适应阈值化函数adaptiveThreshold详解,并附实例源码
  4. 【网络安全】网络安全攻防 -- 黑客攻击简要流程
  5. 请教于国富律师——怎样把灰鸽子病毒和灰鸽子程序区分开
  6. Java 重入锁 ReentrantLock 原理分析
  7. Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题
  8. MySQL 如何利用做排序
  9. 声纹识别中的召回和精度概念
  10. next.js 安装简易教程
  11. [C#] UTF-8 ENCODING=QUOTED-PRINTABLE 的解码和编码
  12. ros2 launch 用法以及一些基础功能函数的示例
  13. 360 se html document 广告,广告拦截 - 360极速浏览器
  14. 从14连号概率题来看“做学问不知足”
  15. bt torrent文件
  16. 把那个读书的家伙拉出来游坛示众
  17. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
  18. java爬网页图片到本地
  19. 抓取2021百科知识竞赛题库和答案
  20. Linux下如何创建和取消软连接

热门文章

  1. 数据结构代码学习笔记(持续更新中)
  2. 5.录制与回放终端会话.
  3. 剖析360为什么要做路由器
  4. JS获取DropDownList的value值与text值
  5. linux安装好的mysql rpm -qa |grep mysql不见
  6. 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目
  7. java struts xml文件设置----自定义日期转换器(局部,及全局类型转换器类)
  8. LaTeX常用的符号
  9. redis数据类型:hashes
  10. deferred initcalls与模块化