实现的效果:类似于网易邮箱删除邮件的功能。
思路:
使用datagird和dataset联合作用批量删除数据。
在datagrid里添加一templatecolumn,将checkbox加到里面,运行时可以通过checkbox选择要删除的数据,最后按“全部删除”按钮即可将之全部删除。其中的关键就在于怎么得到选择的数据,比如是一个id值。这里主要通过遍历datagrid里所有的checkbox,通过checkbox的checked属性来取选择的id值,得到后就可以通过dataset来完成最后的删除工作。
下面是代码部分。
1
<%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="startmssql.delete_mul" %>
2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3
<HTML>
4
<HEAD>
5
<title>WebForm4</title>
6
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
7
<meta name="CODE_LANGUAGE" Content="C#">
8
<meta name="vs_defaultClientScript" content="JavaScript">
9
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
10
</HEAD>
11
<body MS_POSITIONING="GridLayout">
12
<form id="WebForm4" method="post" runat="server">
13
<asp:DataGrid id="showData" runat="server" AutoGenerateColumns="False" PageSize="5" AllowPaging="True" AllowCustomPaging="True">
14
<Columns>
15
<asp:TemplateColumn>
16
<ItemTemplate>
17
<asp:CheckBox ID="toCheck" Runat="server"></asp:CheckBox>
18
</ItemTemplate>
19
</asp:TemplateColumn>
20
<asp:BoundColumn DataField="userID" HeaderText="编号"></asp:BoundColumn>
21
<asp:BoundColumn DataField="username" HeaderText="用户名"></asp:BoundColumn>
22
<asp:BoundColumn DataField="provinceID" HeaderText="proviceID"></asp:BoundColumn>
23
<asp:BoundColumn DataField="cityID" HeaderText="cityID"></asp:BoundColumn>
24
<asp:BoundColumn DataField="areaID" HeaderText="areaID"></asp:BoundColumn>
25
<asp:BoundColumn DataField="enabled" HeaderText="enableD"></asp:BoundColumn>
26
</Columns>
27
<PagerStyle Mode="NumericPages"></PagerStyle>
28
</asp:DataGrid>
29
<asp:LinkButton id="showSelected" runat="server" style="Z-INDEX: 101; LEFT: 110px; POSITION: absolute; TOP: 174px"> 检查!</asp:LinkButton>
30
<asp:LinkButton id="deleteMul" runat="server" style="Z-INDEX: 102; LEFT: 186px; POSITION: absolute; TOP: 174px">删除!</asp:LinkButton>
31
</form>
32
</body>
33
</HTML>
34
<%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="startmssql.delete_mul" %>2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >3
<HTML>4
<HEAD>5
<title>WebForm4</title>6
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">7
<meta name="CODE_LANGUAGE" Content="C#">8
<meta name="vs_defaultClientScript" content="JavaScript">9
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">10
</HEAD>11
<body MS_POSITIONING="GridLayout">12
<form id="WebForm4" method="post" runat="server">13
<asp:DataGrid id="showData" runat="server" AutoGenerateColumns="False" PageSize="5" AllowPaging="True" AllowCustomPaging="True">14
<Columns>15
<asp:TemplateColumn>16
<ItemTemplate>17
<asp:CheckBox ID="toCheck" Runat="server"></asp:CheckBox>18
</ItemTemplate>19
</asp:TemplateColumn>20
<asp:BoundColumn DataField="userID" HeaderText="编号"></asp:BoundColumn>21
<asp:BoundColumn DataField="username" HeaderText="用户名"></asp:BoundColumn>22
<asp:BoundColumn DataField="provinceID" HeaderText="proviceID"></asp:BoundColumn>23
<asp:BoundColumn DataField="cityID" HeaderText="cityID"></asp:BoundColumn>24
<asp:BoundColumn DataField="areaID" HeaderText="areaID"></asp:BoundColumn>25
<asp:BoundColumn DataField="enabled" HeaderText="enableD"></asp:BoundColumn>26
</Columns>27
<PagerStyle Mode="NumericPages"></PagerStyle>28
</asp:DataGrid>29
<asp:LinkButton id="showSelected" runat="server" style="Z-INDEX: 101; LEFT: 110px; POSITION: absolute; TOP: 174px"> 检查!</asp:LinkButton>30
<asp:LinkButton id="deleteMul" runat="server" style="Z-INDEX: 102; LEFT: 186px; POSITION: absolute; TOP: 174px">删除!</asp:LinkButton>31
</form>32
</body>33
</HTML>34

C#源程:
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Web;
7
using System.Web.SessionState;
8
using System.Web.UI;
9
using System.Web.UI.WebControls;
10
using System.Web.UI.HtmlControls;
11
using System.Data.SqlClient;
12
using System.Configuration;
13
14
namespace startmssql
15
{
16
///
17
/// delete_mul 的摘要说明。
18
///使用datagird和dataset联合作用批量删除数据。
19
///在datagrid里添加一templatecolumn,将checkbox加到里面,运行时可以通过checkbox选择要删除的数据,最后按“全部删除”按钮即可将之全部删除。具体的示例可以看一些电子邮箱里的此种功能,比如163的就有。
20
///其中的关键就在于怎么得到选择的数据,比如是一个id值。这里主要通过遍历datagrid里所有的checkbox,通过checkbox的checked属性来取选择的id值,得到后就可以通过dataset来完成最后的删除工作。
21
22
///
23
public class delete_mul : System.Web.UI.Page
24
{
25
protected System.Web.UI.WebControls.LinkButton showSelected;
26
protected System.Web.UI.WebControls.LinkButton deleteMul;
27
protected System.Web.UI.WebControls.DataGrid showData;
28
private SqlConnection conn;
29
private SqlCommand cmd;
30
private SqlDataAdapter ada;
31
32
33
private void Page_Load(object sender, System.EventArgs e)
34
{
35
// 在此处放置用户代码以初始化页面
36
if(!this.IsPostBack)
37
setUp();
38
}
39
40
Web 窗体设计器生成的代码
62
63
//得到datareader数据源
64
private SqlDataReader getDataReader()
65
{
66
67
68
string strconn=ConfigurationSettings.AppSettings["ConnectionString"];
69
conn=new SqlConnection(strconn);
70
string sql="select * from testgrid";
71
cmd=new SqlCommand(sql,conn);
72
try
73
{
74
conn.Open();
75
SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
76
return sdr;
77
}
78
catch(SqlException ex)
79
{
80
Trace.Warn(ex.Message);
81
return null;
82
}
83
}
84
85
//得到dataset数据源
86
private DataSet getDataSet()
87
{
88
string strconn=ConfigurationSettings.AppSettings["ConnectionString"];
89
string sql="select * from testgrid";
90
ada=new SqlDataAdapter(sql,strconn);
91
DataSet ds=new DataSet();
92
try
93
{
94
ada.Fill(ds);
95
return ds;
96
}
97
catch(SqlException ex)
98
{
99
Trace.Warn(ex.Message);
100
return null;
101
}
102
}
103
104
//给删除按钮添加一个确认弹出窗口
105
private void addAlert()
106
{
107
deleteMul.Attributes.Add("onclick","return confirm('确定删除这些数据记录?')");
108
}
109
110
//初始化
111
private void setUp()
112
{
113
addAlert();
114
using(SqlDataReader sdr=getDataReader())
115
{
116
showData.DataSource=sdr;
117
showData.DataBind();
118
}
119
}
120
121
//得到选择的id
122
private ArrayList getChecked()
123
{
124
ArrayList saveIdChecked=new ArrayList();
125
CheckBox isChecked;
126
//遍历每一行
127
foreach(DataGridItem dataItem in showData.Items)
128
{
129
//获取checkbox
130
isChecked=(CheckBox)dataItem.FindControl("toCheck");
131
//把选择的id添加到arraylist
132
if(isChecked.Checked==true)
133
{
134
string idChecked=dataItem.Cells[1].Text;
135
saveIdChecked.Add(idChecked);
136
}
137
}
138
return saveIdChecked;
139
}
140
141
//显示选择的数据
142
private void showSelected_Click(object sender, System.EventArgs e)
143
{
144
ArrayList idChecked=getChecked();
145
for(int i=0;i<idChecked.Count;i++)
146
{
147
Trace.Warn((string)idChecked[i]);
148
}
149
}
150
151
//批量删除
152
private void deleteMul_Click(object sender, System.EventArgs e)
153
{
154
ArrayList toDelete=getChecked();
155
using(ada)
156
{
157
DataSet ds=getDataSet();
158
DataTable dt=ds.Tables[0];
159
//设定主键,因为在向dataset填充数据时,会扔掉一些数据库的信息,其中就包括主键,所以需要在这里手动设置
160
dt.PrimaryKey=new DataColumn[]{dt.Columns[0]};
161
SqlCommandBuilder cb=new SqlCommandBuilder(ada);
162
for(int i=0;i<toDelete.Count;i++)
163
{
164
//找到需要删除的行
165
DataRow dr=dt.Rows.Find(toDelete[i]);
166
dr.Delete();
167
}
168
//最后更新
169
ada.Update(ds);
170
}
171
//别忘了重新绑定数据
172
setUp();
173
}
174
}
175
}
176
using System;2
using System.Collections;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Web;7
using System.Web.SessionState;8
using System.Web.UI;9
using System.Web.UI.WebControls;10
using System.Web.UI.HtmlControls; 11
using System.Data.SqlClient;12
using System.Configuration;13
14
namespace startmssql15
{16
/// 17
/// delete_mul 的摘要说明。18
///使用datagird和dataset联合作用批量删除数据。19
///在datagrid里添加一templatecolumn,将checkbox加到里面,运行时可以通过checkbox选择要删除的数据,最后按“全部删除”按钮即可将之全部删除。具体的示例可以看一些电子邮箱里的此种功能,比如163的就有。20
///其中的关键就在于怎么得到选择的数据,比如是一个id值。这里主要通过遍历datagrid里所有的checkbox,通过checkbox的checked属性来取选择的id值,得到后就可以通过dataset来完成最后的删除工作。21

22
/// 23
public class delete_mul : System.Web.UI.Page24
{25
protected System.Web.UI.WebControls.LinkButton showSelected; 26
protected System.Web.UI.WebControls.LinkButton deleteMul;27
protected System.Web.UI.WebControls.DataGrid showData;28
private SqlConnection conn;29
private SqlCommand cmd;30
private SqlDataAdapter ada;31
32
33
private void Page_Load(object sender, System.EventArgs e)34
{35
// 在此处放置用户代码以初始化页面36
if(!this.IsPostBack)37
setUp();38
}39
40
Web 窗体设计器生成的代码62
63
//得到datareader数据源64
private SqlDataReader getDataReader()65
{66
67
68
string strconn=ConfigurationSettings.AppSettings["ConnectionString"];69
conn=new SqlConnection(strconn);70
string sql="select * from testgrid";71
cmd=new SqlCommand(sql,conn);72
try73
{74
conn.Open();75
SqlDataReader sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);76
return sdr;77
}78
catch(SqlException ex)79
{80
Trace.Warn(ex.Message);81
return null;82
}83
}84
85
//得到dataset数据源86
private DataSet getDataSet()87
{88
string strconn=ConfigurationSettings.AppSettings["ConnectionString"];89
string sql="select * from testgrid";90
ada=new SqlDataAdapter(sql,strconn);91
DataSet ds=new DataSet();92
try93
{94
ada.Fill(ds);95
return ds;96
}97
catch(SqlException ex)98
{99
Trace.Warn(ex.Message);100
return null;101
}102
}103
104
//给删除按钮添加一个确认弹出窗口105
private void addAlert()106
{107
deleteMul.Attributes.Add("onclick","return confirm('确定删除这些数据记录?')");108
}109
110
//初始化111
private void setUp()112
{113
addAlert();114
using(SqlDataReader sdr=getDataReader())115
{116
showData.DataSource=sdr;117
showData.DataBind();118
}119
}120
121
//得到选择的id122
private ArrayList getChecked()123
{124
ArrayList saveIdChecked=new ArrayList();125
CheckBox isChecked;126
//遍历每一行127
foreach(DataGridItem dataItem in showData.Items)128
{129
//获取checkbox130
isChecked=(CheckBox)dataItem.FindControl("toCheck");131
//把选择的id添加到arraylist132
if(isChecked.Checked==true)133
{134
string idChecked=dataItem.Cells[1].Text;135
saveIdChecked.Add(idChecked);136
}137
}138
return saveIdChecked;139
}140
141
//显示选择的数据142
private void showSelected_Click(object sender, System.EventArgs e)143
{144
ArrayList idChecked=getChecked();145
for(int i=0;i<idChecked.Count;i++)146
{147
Trace.Warn((string)idChecked[i]);148
}149
}150
151
//批量删除152
private void deleteMul_Click(object sender, System.EventArgs e)153
{154
ArrayList toDelete=getChecked();155
using(ada)156
{157
DataSet ds=getDataSet();158
DataTable dt=ds.Tables[0];159
//设定主键,因为在向dataset填充数据时,会扔掉一些数据库的信息,其中就包括主键,所以需要在这里手动设置160
dt.PrimaryKey=new DataColumn[]{dt.Columns[0]};161
SqlCommandBuilder cb=new SqlCommandBuilder(ada);162
for(int i=0;i<toDelete.Count;i++)163
{164
//找到需要删除的行165
DataRow dr=dt.Rows.Find(toDelete[i]);166
dr.Delete();167
}168
//最后更新169
ada.Update(ds);170
}171
//别忘了重新绑定数据172
setUp();173
}174
}175
}176



浙公网安备 33010602011771号