GridView 全选

<HeaderTemplate>
<asp:CheckBox ID="cbAll" runat="server" AutoPostBack="True" OnCheckedChanged="CheckAll" Text="全选/取消" ToolTip="全选/取消全选" />
</HeaderTemplate>
<ItemTemplate>

<asp:CheckBox ID="cbSelect" runat="server" ToolTip="选择" />
<input id="hidid" type="hidden" runat="server" value='<%# Eval("ID") %>' />
</ItemTemplate>

 protected void gvBillDetail_RowDataBound(object sender, GridViewRowEventArgs e)
 {

 if (e.Row.RowType == DataControlRowType.DataRow)
 {

               CheckBox cbox = (CheckBox)e.Row.FindControl("cbSelect");

  //这里的处理是为了回显之前选中的情况
                if (this.SelectedItems != null)
                {
                    HtmlInputHidden hidid = (HtmlInputHidden)e.Row.FindControl("hidid");
                    if (this.SelectedItems.Contains(hidid.Value))
                    {
                        cbox.Checked = true;
                    }
                    else
                    {
                        cbox.Checked = false;
                    }
                }

}

  if (e.Row.RowType == DataControlRowType.Header)
            {
                DataTable dtPPS = (DataTable)ViewState["dtPPS"];
                CheckBox mycbAll = (CheckBox)e.Row.FindControl("cbAll");
                if (mycbAll != null && this.SelectedItems.Count == dtPPS.Rows.Count)
                {
                    mycbAll.Checked = true;
                }
            }

}

  /// <summary>
        /// 从当前页收集选中项的情况
        /// </summary>
        protected void CollectSelected()
        {
            ArrayList mySelectedItems = null;
            if (this.SelectedItems == null)
                mySelectedItems = new ArrayList();
            else
                mySelectedItems = this.SelectedItems;

            for (int i = 0; i < this.gvBillDetail.Rows.Count; i++)
            {
                string id = ((HtmlInputHidden)this.gvBillDetail.Rows[i].FindControl("hidid")).Value;
                CheckBox cb = this.gvBillDetail.Rows[i].FindControl("cbSelect") as CheckBox;
                if (mySelectedItems.Contains(id) && !cb.Checked)
                    mySelectedItems.Remove(id);
                if (!mySelectedItems.Contains(id) && cb.Checked)
                    mySelectedItems.Add(id);
            }
            this.SelectedItems = mySelectedItems;
        }

  protected void gvBillDetail_DataBinding(object sender, EventArgs e)
        {
            //在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
            CollectSelected();
        }

    //实现全选功能
        protected void CheckAll(object sender, EventArgs e)
        {
            CheckBox cbAll = (CheckBox)sender;
            for (int i = 0; i <= gvBillDetail.Rows.Count - 1; i++)
            {
                CheckBox cbox = (CheckBox)gvBillDetail.Rows[i].FindControl("cbSelect");
                if (cbox != null)
                {
                    if (cbAll.Checked == true)
                    {
                        cbox.Checked = true;
                    }
                    else
                    {
                        cbox.Checked = false;
                    }
                }
            }

            ArrayList mySelectedItems = new ArrayList();
            DataTable dtPPS = (DataTable)ViewState["dtPPS"];

            for (int i = 0; i < dtPPS.Rows.Count; i++)
            {
                if (dtPPS.Rows[i]["Status"].ToString() == "1")
                {
                    string id = dtPPS.Rows[i]["ID"].ToString();
                    if (cbAll.Checked == true && !mySelectedItems.Contains(id))
                    {
                        mySelectedItems.Add(id);
                    }
                    if (cbAll.Checked == false && mySelectedItems.Contains(id))
                    {
                        mySelectedItems.Remove(id);
                    }
                }
            }
            this.SelectedItems = mySelectedItems;

        }

原文地址:https://www.cnblogs.com/lgxll/p/2642235.html