• javascript实现datagrid客户端checkbox列的全选,反选


     

    最简格式:这是一个偷巧的方法,但不通用。前提是这个页面只有一个datagrid,且只有datagrid中有checkbox;这个就比较方便。主要思路就是搜索出整个页面的checkbox,将它们全部选中或反选。
    // 全选
    function allCheck()
    {
    for (var i=0;i<Form1.elements.length;i++)
    {
    var e=Form1.elements[i];
    if (e.type=='checkbox')
    e.checked=true;
    }

    }
    //反选
    function revCheck()
    {
    for (var i=0;i<Form1.elements.length;i++)
    {
    var e=Form1.elements[i];
    if (e.type=='checkbox')
    e.checked=!e.checked;
    }
    }


    通用简单格式
    因为asp.net页面中生成datagrid中的checkbox,他的ID是要改变的,所以我们寻找它们的规律,就可以准确的找到这个控件,从而进行全选和反选及选中的操作,
     参数说明:
    prefix:前缀;s:选择框ID;chk:选择框的ID;


    function getObj( objID )
    {
     return document.getElementById( objID );
    }

    // 全选
    function _SelectAll( prefix,s,chk )
    {
     var oArr = _GetColl( prefix,s,chk );
     for( var o in oArr )
     {
      oArr[o].checked = true;
     }
    }
    // 反选
    function _RevSelect( prefix,s,chk )
    {
     var oArr = _GetColl( prefix,s,chk );
     for( var o in oArr )
     {
      oArr[o].checked = !oArr[o].checked;
     }
    }

    // 获值
    function _GetColl( prefix,s,chk )
    {
     var i = s;
     var oArr = new Array();
     while( true)
     {
      var o = getObj( prefix + '__ctl' + i + '_' + chk);
      if( o != null )
      {
       oArr.push( o );
      }
      else
      {
       break;
      }
      i++;
     }
     
     return oArr;
    }
    // 检查是否选中
    function _CheckSelect( prefix,s,chk )
    {
     var oArr = _GetColl( prefix,s,chk );
     for( var o in oArr )
     {
      if( oArr[o].checked)
      {
       return true;
      }
     }
     return false;
     
    }

    推荐通用详细格式:http://www.cnblogs.com/ghd258/archive/2005/11/07/270449.html#Post
    /* 分页
      2    参数说明:
      3    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
      4   
      5    使用方法:
      6    if(e.Item.ItemType == ListItemType.Header)
      7    {
      8        ((CheckBox)e.Item.Cells[1].FindControl("chkAll")).Attributes.Add("onclick","CheckAll('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
      9    }
     10*/
     11function CheckAll(prefix,chkAll,chkSingle)
     12{
     13    var indexChkAll;
     14    if(prefix.length != 0)
     15    {
     16        indexChkAll        = prefix + "__ctl2_" + chkAll;
     17    }
     18    else
     19    {
     20        indexChkAll        = chkAll;
     21    }
     22    var objChkAll = document.getElementById(indexChkAll);
     23    var tempObj;
     24    for(var i=0;i<document.forms[0].elements.length;i++)
     25    {   
     26        tempObj = document.forms[0].elements[i];
     27        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
     28        {
     29            tempObj.checked = objChkAll.checked;
     30        }
     31    }
     32}
     33/**//* 分页
     34    参数说明:
     35    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
     36   
     37    使用方法:
     38    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
     39    {
     40        ((CheckBox)e.Item.Cells[1].FindControl("chkSingle")).Attributes.Add("onclick","CheckSingle('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
     41    }
     42*/
     43function CheckSingle(prefix,chkAll,chkSingle)
     44{
     45    var indexChkAll;
     46    if(prefix.length != 0)
     47    {
     48        indexChkAll        = prefix + "__ctl2_" + chkAll;
     49    }
     50    else
     51    {
     52        indexChkAll        = chkAll;
     53    }
     54    var objChkAll = document.getElementById(indexChkAll);
     55    var tempObj;
     56    var allCount    = 0;
     57    var checkCount    = 0;
     58    for(var i=0;i<document.forms[0].elements.length;i++)
     59    {   
     60        tempObj = document.forms[0].elements[i];
     61        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
     62        {
     63            if(tempObj.checked)
     64            {
     65                checkCount++;
     66            }
     67            else
     68            {
     69                objChkAll.checked = false;
     70                //break;
     71            }
     72            allCount++;
     73        }
     74    }
     75    if(checkCount != allCount)
     76    {
     77        objChkAll.checked = false;
     78    }
     79    else
     80    {
     81        if(allCount != 0)
     82        {
     83            objChkAll.checked = true;
     84        }
     85    }
     86}
     87/**//*
     88    参数说明:
     89    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
     90    type:1【全选】,2【反选】,3【取消】
     91   
     92    使用方法:
     93    this.btnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',1);");
     94    this.btnUnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',2);");
     95    this.btnCancelSelect.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',3);");
     96*/
     97function CheckType(prefix,chkAll,chkSingle,type)
     98{
     99    var indexChkAll;
    100    if(prefix.length != 0)
    101    {
    102        indexChkAll        = prefix + "__ctl2_" + chkAll;
    103    }
    104    else
    105    {
    106        indexChkAll        = chkAll;
    107    }
    108    var objChkAll = document.getElementById(indexChkAll);
    109    var tempObj;
    110    var allCount    = 0;
    111    var checkCount    = 0;
    112    for(var i=0;i<document.forms[0].elements.length;i++)
    113    {   
    114        tempObj = document.forms[0].elements[i];
    115        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
    116        {
    117            switch(type)
    118            {
    119                case 1:
    120                    tempObj.checked = true;
    121                    break;
    122                case 2:
    123                    tempObj.checked = !tempObj.checked;
    124                    break;
    125                case 3:
    126                    tempObj.checked = false;
    127                    break;
    128            }
    129            if(tempObj.checked)
    130            {
    131                checkCount++;
    132            }
    133            allCount++;
    134        }
    135    }
    136    if(checkCount != allCount)
    137    {
    138        objChkAll.checked = false;
    139    }
    140    else
    141    {
    142        if(allCount != 0)
    143        {
    144            objChkAll.checked = true;
    145        }
    146    }
    147    window.event.returnValue = false;
    148    return false;
    149}
    150
    151/**//*
    152    参数说明:
    153    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    154
    155    使用方法:
    156    this.btnDelete.Attributes.Add("onClick","SubmitCheckBox('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
    157*/
    158function SubmitCheckBox(prefix,chkAll,chkSingle,msg)
    159{
    160    var indexChkAll;
    161    if(prefix.length != 0)
    162    {
    163        indexChkAll        = prefix + "__ctl2_" + chkAll;
    164    }
    165    else
    166    {
    167        indexChkAll        = chkAll;
    168    }
    169    var objChkAll = document.getElementById(indexChkAll);
    170   
    171    var tempObj;
    172    var allCount    = 0;
    173    var checkCount    = 0;
    174    for(var i=0;i<document.forms[0].elements.length;i++)
    175    {   
    176        tempObj = document.forms[0].elements[i];
    177        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
    178        {
    179            if(tempObj.checked)
    180            {
    181                checkCount++;
    182            }
    183            allCount++;
    184        }
    185    }
    186    if(allCount == 0) //没有数据
    187    {
    188        window.alert("当前没有" + msg + "可供删除");
    189        window.event.returnValue = false;
    190        return false;
    191    }
    192    else
    193    {
    194        if(checkCount == 0)
    195        {
    196            window.alert("没有选中要删除的" + msg + "");
    197            window.event.returnValue = false;
    198            return false;
    199        }
    200        else
    201        {
    202            //if(window.confirm("确定要删除当前选中的【" + checkCount.toString() + "】项吗?") == false)
    203            if(window.confirm("确定要删除当前选中的" + msg + "吗?") == false)
    204            {
    205                window.event.returnValue = false;
    206                return false;
    207            }
    208        }
    209    }
    210}

  • 相关阅读:
    常用数据结构之哈希表
    常用数据结构之队列
    常用的数据结构之栈
    常用的数据结构之链表
    Zabbix3.4监控Windows机器CPU使用率
    在Pycharm中导入第三方模块库(诸如:matplotlib、numpy等)
    WARNING: You are using pip version 20.2.4; however, version 20.3.1 is available.
    npm无法安装node-sass的解决方法
    常见的树形结构封装
    Mac安装MySql
  • 原文地址:https://www.cnblogs.com/hhq80/p/662521.html
Copyright © 2020-2023  润新知