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
/* 分页
     参数说明:
      prefix:前缀;chkAll:全选框;chkSingle:单选框ID
     
      使用方法:
      if(e.Item.ItemType == ListItemType.Header)
      {
          ((CheckBox)e.Item.Cells[1].FindControl("chkAll")).Attributes.Add("onclick","CheckAll('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
      }
 */
 function CheckAll(prefix,chkAll,chkSingle)
 {
     var indexChkAll;
     if(prefix.length != 0)
     {
         indexChkAll        = prefix + "__ctl2_" + chkAll;
     }
     else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {   
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
             tempObj.checked = objChkAll.checked;
         }
     }
 }
 /**//* 分页
     参数说明:
     prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    
     使用方法:
     if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
     {
         ((CheckBox)e.Item.Cells[1].FindControl("chkSingle")).Attributes.Add("onclick","CheckSingle('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
     }
 */
 function CheckSingle(prefix,chkAll,chkSingle)
 {
     var indexChkAll;
     if(prefix.length != 0)
     {
         indexChkAll        = prefix + "__ctl2_" + chkAll;
     }
     else
    {
         indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
     var allCount    = 0;
     var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {   
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            if(tempObj.checked)
            {
                checkCount++;
            }
            else
            {
                objChkAll.checked = false;
                //break;
            }
            allCount++;
        }
    }
    if(checkCount != allCount)
    {
        objChkAll.checked = false;
    }
   else
    {
        if(allCount != 0)
        {
            objChkAll.checked = true;
        }
   }
}
/**//*
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID
    type:1【全选】,2【反选】,3【取消】
   
    使用方法:
    this.btnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',1);");
    this.btnUnSelectAll.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',2);");
    this.btnCancelSelect.Attributes.Add("onClick","CheckType('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle',3);");
*/
function CheckType(prefix,chkAll,chkSingle,type)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
    var tempObj;
    var allCount    = 0;
    var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {   
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            switch(type)
            {
                case 1:
                    tempObj.checked = true;
                    break;
                case 2:
                    tempObj.checked = !tempObj.checked;
                    break;
                case 3:
                    tempObj.checked = false;
                    break;
            }
            if(tempObj.checked)
            {
                checkCount++;
            }
            allCount++;
        }
    }
    if(checkCount != allCount)
    {
       objChkAll.checked = false;
    }
    else
    {
        if(allCount != 0)
        {
            objChkAll.checked = true;
        }
    }
    window.event.returnValue = false;
    return false;
}

/**//*
    参数说明:
    prefix:前缀;chkAll:全选框;chkSingle:单选框ID

    使用方法:
    this.btnDelete.Attributes.Add("onClick","SubmitCheckBox('" + this.dg.ClientID.ToString() + "','chkAll','chkSingle');");
*/
function SubmitCheckBox(prefix,chkAll,chkSingle,msg)
{
    var indexChkAll;
    if(prefix.length != 0)
    {
        indexChkAll        = prefix + "__ctl2_" + chkAll;
    }
    else
    {
        indexChkAll        = chkAll;
    }
    var objChkAll = document.getElementById(indexChkAll);
   
    var tempObj;
    var allCount    = 0;
    var checkCount    = 0;
    for(var i=0;i<document.forms[0].elements.length;i++)
    {   
        tempObj = document.forms[0].elements[i];
        if(tempObj.type == "checkbox" && tempObj.id != indexChkAll && tempObj.id.indexOf(chkSingle) != -1)
        {
            if(tempObj.checked)
            {
                checkCount++;
            }
            allCount++;
        }
    }
    if(allCount == 0) //没有数据
    {
        window.alert("当前没有" + msg + "可供删除");
        window.event.returnValue = false;
        return false;
    }
    else
    {
        if(checkCount == 0)
       {
            window.alert("没有选中要删除的" + msg + "");
            window.event.returnValue = false;
            return false;
        }
      else
        {
            //if(window.confirm("确定要删除当前选中的【" + checkCount.toString() + "】项吗?") == false)
            if(window.confirm("确定要删除当前选中的" + msg + "吗?") == false)
            {
               window.event.returnValue = false;
                return false;
            }
        }
   }
}

 

 

 

 

 

 

 

 


//使用MasterPage
function checkAll(flag, prefix) {
var form = document.forms['aspnetForm'];


for (var i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "checkbox" && (form.elements[i].name.search(prefix) > 0) && !form.elements[i].disabled)
form.elements[i].checked = flag;
}
}
//没有使用MasterPage
function checkAll_NoMasterPage(flag, form, prefix) {
if (!form)
return;

if (prefix)
var reg = new RegExp("^"+prefix, "");
for (var i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "checkbox" && (!prefix || form.elements[i].name.search(reg) == 0) && !form.elements[i].disabled)
form.elements[i].checked = flag;
}
}
//删除前的确定
function toDel(prefix){
var checkvalue;
var form = document.forms['aspnetForm'];
checkvalue=false;

for (var i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "checkbox" && (form.elements[i].name.search(prefix) > 0) && !form.elements[i].disabled && form.elements[i].checked)
checkvalue=true;
}

if (checkvalue!=false){
return confirm('你确认要删除选定的记录?');

}
else{
 alert(" 请在列表中选择要删除的记录!");
  return false;
}
}

posted on 2008-07-08 11:09  西湖浪子  阅读(296)  评论(0)    收藏  举报