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

  • 相关阅读:
    爱福窝在线装修设计软件测评
    关于简书首页模式的思考和畅想
    这些O2O比你们更靠谱儿
    iOS动画——Layer Animations
    最大流, 最小割问题及算法实现
    浅谈iOS学习之路
    iOS架构师之路:慎用继承
    iOS架构师之路:控制器(View Controller)瘦身设计
    IOS中的编码规范
    关闭键盘导致tableView:didSelectRowAtIndexPath:失效解决办法
  • 原文地址:https://www.cnblogs.com/skylaugh/p/596098.html
Copyright © 2020-2023  润新知