随笔-49  评论-51  文章-3 

Gridview 实现 全选多选(支持firefox)

 之前从网上借鉴了一个方法,在gridview中添加全选与不选批处理.但是不支持firefox 文章地址

 所以弄了个方法,现在以下的方法支持ff,已经测试通过

aspx代码

 

后台绑定gridview_rowDataBound事件

   protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        
switch (e.Row.RowType)
        {
            
case DataControlRowType.DataRow:
                CheckBox chkItem 
= (CheckBox)e.Row.FindControl("chkItem");
                chkItem.Attributes.Add(
"onclick", String.Format("checkTopCheckbox('{0}')"this.GridView1.ClientID));
                
break;

            
case DataControlRowType.Header:
                CheckBox chkSelectAll 
= (CheckBox)e.Row.FindControl("chkSelectAll");
                chkSelectAll.Attributes.Add(
"onclick", String.Format("checkAllCheckboxes(this,'{0}')"this.GridView1.ClientID));
                
break;
        }
    }

 

获取select选择项的值:

  

   protected void btnCheckBatch_Click(object sender, EventArgs e)
    {
        
string aa = "";
        
foreach (GridViewRow _listItem in this.GridView1.Rows) //获取所选项
        {
            CheckBox chkbox 
= (CheckBox)_listItem.FindControl("chkItem");
            
if (chkbox.Checked)
            {
                
int _Id = Convert.ToInt32(this.GridView1.DataKeys[_listItem.RowIndex].Value);
                
//处理数据操作
                aa += _Id.ToString() + ",";
            }
        }


        Response.Write(aa);
    }

 

 

忘了加上没有选择项的时候按钮javascript提示了

  在aspx 也的<script> 中加入

 

    // 判断多选是否与选中项(没有选中的返回false)
    function slcNo_click(controlName)
    {
            var _checkbox;
            var i = 2;

            //_checkboxAll.checked=(_isChecked);

            while (document.getElementById(controlName + '_ctl' + getIDString(i) + '_chkItem')) {


                _checkbox = document.getElementById(controlName + '_ctl' + getIDString(i) + '_chkItem')
              if (_checkbox.type == 'checkbox') {
                if (_checkbox.checked) return true;
                i++;
                }
            } // while
            alert("请选择后再操作!");
           return false;
    }

 

    再在后台cs文件Page_Load事件中加入

       btnCheckBatch.Attributes.Add("onclick", String.Format("return slcNo_click('{0}')", this.GridView1.ClientID));

 这样就可以在没有选择任何项进行操作时弹出客户端提示不进行后台批量操作了。

posted on 2009-03-14 15:14 Theo 阅读(...) 评论(...) 编辑 收藏