webform1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="work031.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>GridView全选,反选,删除</title>
    <script type="text/javascript">
        //全选
        function SelectAll()
        {
            var checkbox = document.all.CheckboxGroup;
            //var checkbox = document.getElementsByName("CheckboxGroup");  //此方式也有效
            //var checkbox = document.getElementsByTagName("input");  //此方式也有效,但是有bug,GridView中如果有其他列是checkbox,会受到影响

            if (checkbox == null)
            {
                return false;
            }

            if (checkbox.length + "" != "undefined")
            {
                for (var i = 0; i < checkbox.length; i++)
                {
                    checkbox[i].checked = true;
                }
            }
            else
            {
                checkbox.checked = true;  //修正当列表长度为1时,不能反选的bug
            }
            return false;
        }

        //反选
        function ReverseSelect()
        {
            var checkbox = document.all.CheckboxGroup;  
            //var checkbox = document.getElementsByName("CheckboxGroup");  //此方式也有效
            //var checkbox = document.getElementsByTagName("input");  //此方式也有效,但是有bug,GridView中如果有其他列是checkbox,会受到影响

            if (checkbox == null)
            {
                return false; 
            }

            if (checkbox.length + "" != "undefined")
            {
                for (var i = 0; i < checkbox.length; i++)
                {
                    checkbox[i].checked = !checkbox[i].checked;
                }
            }
            else
            {
                checkbox.checked = !checkbox.checked;  //修正当列表长度为1时,不能反选的bug
            }
            return false;
        }

        //检查是否至少选择了一项
        function CheckHasSelectedItem()
        {
            var checkbox = document.all.CheckboxGroup;
            //var checkbox = document.getElementsByName("CheckboxGroup");  //此方式也有效
            
            if (checkbox == null)
            {
                return false;
            }

            if (checkbox.length + "" != "undefined")
            {
                for (var i = 0; i <= checkbox.length; i++)
                {
                    if (checkbox[i].checked)
                    {
                        return true;
                    }
                }
            }
            else
            {
                //修复一条记录时无法删除的bug
                if (checkbox.checked)
                {
                    return true;
                }
                else
                {
                    return false;
                }
                
            }
            
        }

        //删除前确认
        function ConfirmDelete()
        {
            if (CheckHasSelectedItem())
            {
                return confirm("确认删除选中的记录吗?");
            }
            else
            {
                alert("请至少选择一项!");
                return false;
            }
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnPageIndexChanging="GridView1_PageIndexChanging" Width="100%">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="CheckboxGroup"  name="CheckboxGroup" type="checkbox" value='<%# Eval("user_id") %>'/>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="user_id" HeaderText="user_id"></asp:BoundField>
                <asp:BoundField DataField="user_name" HeaderText="user_name"></asp:BoundField>
                <asp:BoundField DataField="real_name" HeaderText="real_name"></asp:BoundField>
                <asp:BoundField DataField="age" HeaderText="age"></asp:BoundField>
                <asp:CheckBoxField DataField="sex" HeaderText="sex"></asp:CheckBoxField>
                <asp:BoundField DataField="mobile" HeaderText="mobile"></asp:BoundField>
                <asp:TemplateField HeaderText="Email">
                    <AlternatingItemTemplate>
                        <a href='emailto:<%# Eval("email") %>'>发邮件给<%# Eval("real_name") %></a>
                    </AlternatingItemTemplate>
                    <ItemTemplate>
                        <%# Eval("email") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:HyperLinkField DataNavigateUrlFields="user_id" DataNavigateUrlFormatString="Details.aspx?id={0}" DataTextField="real_name" HeaderText="查看"></asp:HyperLinkField>
            </Columns>
            <EmptyDataTemplate>
                提示:没有任何数据可以显示
            </EmptyDataTemplate>
        </asp:GridView>
        <table border="0" style="width: 30%;border-collapse:collapse;">
            <tr>
                <td><a style="text-decoration:underline;" href="#" onclick="SelectAll();">全选</a></td>
                <td><a style="text-decoration:underline;" href="#" onclick="ReverseSelect();">反选</a></td>
                <td>
                    <asp:Button ID="btnDelete" runat="server" Text="删除" OnClientClick="javascript:return ConfirmDelete();" OnClick="btnDelete_Click" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

webform1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace work031
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView(0);
            }
        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            BindGridView(e.NewPageIndex);
        }

        private void BindGridView(int pageIndex)
        {
            System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
            bu.DataSource = "(local)";
            bu.InitialCatalog = "test";
            bu.UserID = "sa";
            bu.Password = "123456";

            string conString = bu.ConnectionString;
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);
            con.Open();

            string sql = "select * from userinfo";
            //string sql = "select * from userinfo where user_id > 1000";  //使用此句,是为了配合显示EmptyDataTemplate
            System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(sql, con);
            System.Data.DataTable dt = new System.Data.DataTable();
            adapter.Fill(dt);

            GridView1.AllowPaging = true;
            GridView1.AutoGenerateColumns = false;
            GridView1.PageSize = 4;

            GridView1.DataSource = dt;
            GridView1.PageIndex = pageIndex;
            GridView1.DataBind();
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
            System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
            bu.DataSource = "(local)";
            bu.InitialCatalog = "test";
            bu.UserID = "sa";
            bu.Password = "123456";

            string conString = bu.ConnectionString;
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);
            con.Open();

            string sql = string.Format("delete from userinfo where user_id in ({0})",Request["CheckboxGroup"]);
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, con);
            int count = cmd.ExecuteNonQuery();
            if (count > 0)
            {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "sucess", "<script>window.alert('删除成功!');window.location='WebForm1.aspx';</script>");
            }
            else
            {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"fail","<script>window.alert('删除失败!')</script>");
            }
        }


    }
}

details.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Details.aspx.cs" Inherits="work031.Details" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table border="1" style="width:50%;">
            <tr>
                <td>user_id</td>
                <td><%= dt.Rows[0]["user_id"].ToString() %></td>
            </tr>
            <tr>
                <td>user_name</td>
                <td><%= dt.Rows[0]["user_name"].ToString() %></td>
            </tr>
            <tr>
                <td>real_name</td>
                <td><%= dt.Rows[0]["real_name"].ToString() %></td>
            </tr>
            <tr>
                <td>age</td>
                <td><%= dt.Rows[0]["age"].ToString() %></td>
            </tr>
            <tr>
                <td>sex</td>
                <td><%= dt.Rows[0]["sex"].ToString() %></td>
            </tr>
            <tr>
                <td>mobile</td>
                <td><%= dt.Rows[0]["mobile"].ToString() %></td>
            </tr>
            <tr>
                <td>phone</td>
                <td><%= dt.Rows[0]["phone"].ToString() %></td>
            </tr>
            <tr>
                <td>email</td>
                <td><%= dt.Rows[0]["email"].ToString() %></td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

details.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace work031
{
    public partial class Details : System.Web.UI.Page
    {
        protected System.Data.DataTable dt;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["id"] != null)
            {
                string user_id = Request.QueryString["id"].ToString();
                dt = new System.Data.DataTable();
                dt = GetData(user_id);

            }

        }

        private System.Data.DataTable GetData(string id)
        {
            System.Data.SqlClient.SqlConnectionStringBuilder bu = new System.Data.SqlClient.SqlConnectionStringBuilder();
            bu.DataSource = "(local)";
            bu.InitialCatalog = "test";
            bu.UserID = "sa";
            bu.Password = "123456";

            string conString = bu.ConnectionString;
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);

            string sql = string.Format("select * from userinfo where user_id='{0}'", id);
            System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(sql, con);

            System.Data.DataTable dt = new System.Data.DataTable();
            adapter.Fill(dt);

            return dt;
        }
    }
}

sql

create database test;

create table UserInfo(
	user_id int identity(1,1) not null,
	user_name varchar(20) not null unique,
	real_name nvarchar(8) not null,
	age tinyint not null,
	sex bit not null,
	mobile varchar(14),
	phone varchar(14),
	email varchar(50) not null,
	primary key(user_id) 
);

insert into UserInfo values('zhangfei','张飞',36,1,'13011110001','8845996','zf@qq.com');
insert into UserInfo values('guanyu','关羽',38,1,'13011110002','8845995','gy@qq.com');
insert into UserInfo values('liubei','刘备',42,1,'13011110003','8845994','lb@qq.com');
insert into UserInfo values('zhaoyun','赵云',32,1,'13011110004','8845993','zy@qq.com');
insert into UserInfo values('huangzhong','黄忠',50,1,'13011110005','8845992','hz@qq.com');
insert into UserInfo values('caocao','曹操',48,1,'13011110006','8845991','cc@qq.com');
insert into UserInfo values('sunquan','孙权',33,1,'13011110007','8845990','sq@qq.com');
insert into UserInfo values('diaochan','貂蝉',20,0,'13011110008','8845880','dc@qq.com');
insert into UserInfo values('daqiao','大乔',21,0,'13011110009','8845881','dq@qq.com');
insert into UserInfo values('xiaoqiao','小乔',20,0,'13011110010','8845882','xq@qq.com');