我们项目后台操作中不可避免的会有同时删除多项的操作,本文实现的就是当点击全选时,选定当前页中所有项,当取消了某一项的选定,则“全选”CheckBox的checked也为false;然后在后台中取到所选定的项的ID,实现同时删除多项的功能。
前台代码
后台代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewsForm.aspx.cs" Inherits="Admin_NewsForm" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 <script type="text/javascript" language="javascript">
9 function isOrNotCheckAll(checkValue)
10 {
11 var arrAllCheckBoxes = document.getElementsByTagName("input");
12 //check all
13 if(checkValue==true)
14 {
15 for(i=0;i<arrAllCheckBoxes.length;i++)
16 {
17 if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
18 {
19 document.getElementById(arrAllCheckBoxes[i].id).checked=true;
20 }
21 }
22 }
23 //do not check any one
24 if(checkValue==false)
25 {
26 for(i=0;i<arrAllCheckBoxes.length;i++)
27 {
28 if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
29 {
30 document.getElementById(arrAllCheckBoxes[i].id).checked=false;
31 }
32 }
33 }
34 }
35 function CBDeleteClick(clientID,checkAllClientID)
36 {
37 var arrAllCheckBoxes = document.getElementsByTagName("input");
38 //there has some one not be checked
39 if(document.getElementById(clientID).checked==false)
40 {
41 for(i=0;i<arrAllCheckBoxes.length;i++)
42 {
43 if(arrAllCheckBoxes[i].id.indexOf("CheckAll")!=-1)
44 {
45 arrAllCheckBoxes[i].checked=false;
46 }
47 }
48 }
49 }
50 </script>
51 </head>
52 <body>
53 <form id="form1" runat="server">
54 <asp:Image ID="Image1" runat="server" ImageUrl="HXImages/button/btn_add.gif" />
55 <asp:ImageButton ID="BtnDelete" runat="server"
56 ImageUrl="~/Admin/HXImages/button/btn_del.gif" onclick="BtnDelete_Click" />
57 <asp:GridView ID="GVNews" runat="server" AutoGenerateColumns="False" DataKeyNames="newsID"
58 Width="100%" onrowdatabound="GVNews_RowDataBound"
59 onrowdeleting="GVNews_RowDeleting" AllowPaging="True"
60 onpageindexchanging="GVNews_PageIndexChanging" PageSize="3" >
61 <Columns>
62 <asp:TemplateField>
63 <HeaderTemplate>
64 全选
65 <asp:CheckBox ID="CheckAll" runat="server" OnClick="javascript: return isOrNotCheckAll (this.checked);" />
66 </HeaderTemplate>
67 <ItemTemplate>
68 <asp:CheckBox ID="CBDelete" runat="server" />
69 </ItemTemplate>
70 <ItemStyle HorizontalAlign="Center" />
71 </asp:TemplateField>
72
73 <asp:BoundField DataField="newsID" HeaderText="序号" >
74 <ItemStyle HorizontalAlign="Center" />
75 </asp:BoundField>
76 <asp:BoundField DataField="newsTitle" HeaderText="标题">
77 <ItemStyle HorizontalAlign="Center" />
78 </asp:BoundField>
79 <asp:TemplateField HeaderText="添加日期">
80 <ItemStyle HorizontalAlign="Center" />
81 <ItemTemplate>
82 <%# Convert.ToDateTime(Eval("newsDate")).ToString("yyyy-MM-dd")%>
83 </ItemTemplate>
84 </asp:TemplateField>
85 <asp:BoundField DataField="newsDegree" HeaderText="点击次数(次)">
86 <ItemStyle HorizontalAlign="Center" />
87 </asp:BoundField>
88 <asp:TemplateField HeaderText="操作">
89 <ItemStyle HorizontalAlign="Center" />
90 <ItemTemplate>
91 <asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="HXImages/del.gif" runat="server" />
92 </ItemTemplate>
93 </asp:TemplateField>
94 </Columns>
95 </asp:GridView>
96 </form>
97 </body>
98 </html>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 <script type="text/javascript" language="javascript">
9 function isOrNotCheckAll(checkValue)
10 {
11 var arrAllCheckBoxes = document.getElementsByTagName("input");
12 //check all
13 if(checkValue==true)
14 {
15 for(i=0;i<arrAllCheckBoxes.length;i++)
16 {
17 if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
18 {
19 document.getElementById(arrAllCheckBoxes[i].id).checked=true;
20 }
21 }
22 }
23 //do not check any one
24 if(checkValue==false)
25 {
26 for(i=0;i<arrAllCheckBoxes.length;i++)
27 {
28 if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
29 {
30 document.getElementById(arrAllCheckBoxes[i].id).checked=false;
31 }
32 }
33 }
34 }
35 function CBDeleteClick(clientID,checkAllClientID)
36 {
37 var arrAllCheckBoxes = document.getElementsByTagName("input");
38 //there has some one not be checked
39 if(document.getElementById(clientID).checked==false)
40 {
41 for(i=0;i<arrAllCheckBoxes.length;i++)
42 {
43 if(arrAllCheckBoxes[i].id.indexOf("CheckAll")!=-1)
44 {
45 arrAllCheckBoxes[i].checked=false;
46 }
47 }
48 }
49 }
50 </script>
51 </head>
52 <body>
53 <form id="form1" runat="server">
54 <asp:Image ID="Image1" runat="server" ImageUrl="HXImages/button/btn_add.gif" />
55 <asp:ImageButton ID="BtnDelete" runat="server"
56 ImageUrl="~/Admin/HXImages/button/btn_del.gif" onclick="BtnDelete_Click" />
57 <asp:GridView ID="GVNews" runat="server" AutoGenerateColumns="False" DataKeyNames="newsID"
58 Width="100%" onrowdatabound="GVNews_RowDataBound"
59 onrowdeleting="GVNews_RowDeleting" AllowPaging="True"
60 onpageindexchanging="GVNews_PageIndexChanging" PageSize="3" >
61 <Columns>
62 <asp:TemplateField>
63 <HeaderTemplate>
64 全选
65 <asp:CheckBox ID="CheckAll" runat="server" OnClick="javascript: return isOrNotCheckAll (this.checked);" />
66 </HeaderTemplate>
67 <ItemTemplate>
68 <asp:CheckBox ID="CBDelete" runat="server" />
69 </ItemTemplate>
70 <ItemStyle HorizontalAlign="Center" />
71 </asp:TemplateField>
72
73 <asp:BoundField DataField="newsID" HeaderText="序号" >
74 <ItemStyle HorizontalAlign="Center" />
75 </asp:BoundField>
76 <asp:BoundField DataField="newsTitle" HeaderText="标题">
77 <ItemStyle HorizontalAlign="Center" />
78 </asp:BoundField>
79 <asp:TemplateField HeaderText="添加日期">
80 <ItemStyle HorizontalAlign="Center" />
81 <ItemTemplate>
82 <%# Convert.ToDateTime(Eval("newsDate")).ToString("yyyy-MM-dd")%>
83 </ItemTemplate>
84 </asp:TemplateField>
85 <asp:BoundField DataField="newsDegree" HeaderText="点击次数(次)">
86 <ItemStyle HorizontalAlign="Center" />
87 </asp:BoundField>
88 <asp:TemplateField HeaderText="操作">
89 <ItemStyle HorizontalAlign="Center" />
90 <ItemTemplate>
91 <asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="HXImages/del.gif" runat="server" />
92 </ItemTemplate>
93 </asp:TemplateField>
94 </Columns>
95 </asp:GridView>
96 </form>
97 </body>
98 </html>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System;
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13
14 public partial class Admin_NewsForm : System.Web.UI.Page
15 {
16 string sql = null;
17 protected void Page_Load(object sender, EventArgs e)
18 {
19 if (!IsPostBack)
20 {
21 BindGVNews();
22 BtnDelete.Attributes.Add("onclick", "return confirm('确定要删除吗?');");
23 }
24 }
25 void BindGVNews()
26 {
27 sql = string.Format("select * from newsTable order by newsID desc");
28 DataTable dt = DataBase.ExecuteDataSet(sql).Tables[0];
29 GVNews.DataSource = dt.DefaultView;
30 GVNews.DataBind();
31 }
32 protected void GVNews_RowDeleting(object sender, GridViewDeleteEventArgs e)
33 {
34 string newsID = GVNews.DataKeys[e.RowIndex].Value.ToString();
35 sql = string.Format("delete from newsTable where newsID={0}", Convert.ToInt32(newsID));
36 int i = DataBase.ExecuteNonQuery(sql);
37 if (i > 0)
38 {
39 BindGVNews();
40 }
41 }
42 protected void GVNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
43 {
44 GVNews.PageIndex = e.NewPageIndex;
45 BindGVNews();
46 }
47 protected void GVNews_RowDataBound(object sender, GridViewRowEventArgs e)
48 {
49 if (e.Row.RowType == DataControlRowType.DataRow)
50 {
51 ((ImageButton)e.Row.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
52 ((CheckBox)e.Row.FindControl("CBDelete")).Attributes.Add("onclick", "CBDeleteClick('"+((CheckBox)e.Row.FindControl("CBDelete")).ClientID+"')");
53 }
54 }
55 string GetDeleteIDs()
56 {
57 string IDs = null;
58 foreach (GridViewRow gvr in GVNews.Rows)
59 {
60 CheckBox cb = (CheckBox)gvr.FindControl("CBDelete");
61 if (cb.Checked)
62 {
63 if (IDs == null)
64 {
65 IDs = GVNews.DataKeys[gvr.RowIndex].Value.ToString();
66 }
67 else
68 {
69 IDs = IDs+"," + GVNews.DataKeys[gvr.RowIndex].Value.ToString();
70 }
71 }
72 }
73 return IDs;
74 }
75 protected void BtnDelete_Click(object sender, ImageClickEventArgs e)
76 {
77 string newsIDs = this.GetDeleteIDs();
78 if (newsIDs != null)
79 {
80 sql = string.Format("delete from newsTable where newsID in ({0})", newsIDs);
81 int i = DataBase.ExecuteNonQuery(sql);
82 if (i > 0)
83 {
84 BindGVNews();
85 }
86 }
87 else
88 {
89 Response.Write("<script>alert('请指定要删除的项!');</script>");
90 }
91 }
92 }
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13
14 public partial class Admin_NewsForm : System.Web.UI.Page
15 {
16 string sql = null;
17 protected void Page_Load(object sender, EventArgs e)
18 {
19 if (!IsPostBack)
20 {
21 BindGVNews();
22 BtnDelete.Attributes.Add("onclick", "return confirm('确定要删除吗?');");
23 }
24 }
25 void BindGVNews()
26 {
27 sql = string.Format("select * from newsTable order by newsID desc");
28 DataTable dt = DataBase.ExecuteDataSet(sql).Tables[0];
29 GVNews.DataSource = dt.DefaultView;
30 GVNews.DataBind();
31 }
32 protected void GVNews_RowDeleting(object sender, GridViewDeleteEventArgs e)
33 {
34 string newsID = GVNews.DataKeys[e.RowIndex].Value.ToString();
35 sql = string.Format("delete from newsTable where newsID={0}", Convert.ToInt32(newsID));
36 int i = DataBase.ExecuteNonQuery(sql);
37 if (i > 0)
38 {
39 BindGVNews();
40 }
41 }
42 protected void GVNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
43 {
44 GVNews.PageIndex = e.NewPageIndex;
45 BindGVNews();
46 }
47 protected void GVNews_RowDataBound(object sender, GridViewRowEventArgs e)
48 {
49 if (e.Row.RowType == DataControlRowType.DataRow)
50 {
51 ((ImageButton)e.Row.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
52 ((CheckBox)e.Row.FindControl("CBDelete")).Attributes.Add("onclick", "CBDeleteClick('"+((CheckBox)e.Row.FindControl("CBDelete")).ClientID+"')");
53 }
54 }
55 string GetDeleteIDs()
56 {
57 string IDs = null;
58 foreach (GridViewRow gvr in GVNews.Rows)
59 {
60 CheckBox cb = (CheckBox)gvr.FindControl("CBDelete");
61 if (cb.Checked)
62 {
63 if (IDs == null)
64 {
65 IDs = GVNews.DataKeys[gvr.RowIndex].Value.ToString();
66 }
67 else
68 {
69 IDs = IDs+"," + GVNews.DataKeys[gvr.RowIndex].Value.ToString();
70 }
71 }
72 }
73 return IDs;
74 }
75 protected void BtnDelete_Click(object sender, ImageClickEventArgs e)
76 {
77 string newsIDs = this.GetDeleteIDs();
78 if (newsIDs != null)
79 {
80 sql = string.Format("delete from newsTable where newsID in ({0})", newsIDs);
81 int i = DataBase.ExecuteNonQuery(sql);
82 if (i > 0)
83 {
84 BindGVNews();
85 }
86 }
87 else
88 {
89 Response.Write("<script>alert('请指定要删除的项!');</script>");
90 }
91 }
92 }