• TreeView控件在客户端的 全选/全消 脚本实现


    首先,在aspx页面中的TreeView定义中,定义:

    <asp:TreeView ID="tvwAll" runat="server" ShowCheckBoxes="All" onclick="postBackByObject()">
    </asp:TreeView>

    第二步,实现javaScript方法:

    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;
            }

          }    

        } 

    }

    该方法来自于:http://www.cnblogs.com/ltenai/archive/2007/06/28/798822.html

  • 相关阅读:
    Entity Framework版本历史概览
    读书笔记—CLR via C#章节3
    读书笔记—CLR via C#章节1-2
    C#编程实践–产假方案优化版
    老调重弹--面向对象设计原则--包设计原则
    Redis(七)分布式锁
    Redis(九)高可用专栏之Sentinel模式
    Redis(九)高可用专栏之《简介篇》
    Redis(七)持久化(Persistence)
    Redis(六)管道(Pipelining)
  • 原文地址:https://www.cnblogs.com/EasyLive2006/p/1247516.html
Copyright © 2020-2023  润新知