实现点击DataGrid题头CheckBox全选或全不选及在翻页后保持CheckBox状态
代码说明:1.加入题头CheckBox,实现点击题头CheckBox实现全选或全不选
2.在翻页时保存原来页的CheckBox的状态
2.在翻页时保存原来页的CheckBox的状态
1
Province.aspx
2![]()
3
<%@ Page language="c#" Codebehind="Province.aspx.cs" AutoEventWireup="false" Inherits="Province.WebForm1" %>
4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
5
<HTML>
6
<HEAD>
7
<title>Province</title>
8
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
9
<meta content="C#" name="CODE_LANGUAGE">
10
<meta content="JavaScript" name="vs_defaultClientScript">
11
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
12
<script language="javascript">
13
// 函数功能:全选或全不选
14
function isSelect(checkboxValue, checkboxIdValue)
15
{
16
var form = document.forms[0];
17
for (i = 0; i < form.length; i++) {
18
if (checkboxIdValue.indexOf ('CheckAll') != -1)
19
{
20
if(checkboxValue == true)
21
{
22
form.elements[i].checked = true;
23
}
24
else
25
{
26
form.elements[i].checked = false;
27
}
28
}
29
else if (checkboxIdValue.indexOf ('DeleteThis') != -1)
30
{
31
if(form.elements[i].checked == false)
32
{
33
form.elements[1].checked = false;
34
}
35
}
36
}
37
}
38
39
// 函数功能:确认删除
40
function confirmDelete(form)
41
{
42
for (i = 0; i < form.length; i++)
43
{
44
if (form.elements[i].name.indexOf('DeleteThis') != -1)
45
{
46
if(form.elements[i].checked)
47
{
48
return confirm('确认要删除吗?');
49
}
50
}
51
}
52
}
53
</script>
54
</HEAD>
55
<body MS_POSITIONING="GridLayout">
56
<form id="Form1" method="post" runat="server">
57
<FONT face="宋体">
58
<asp:datagrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 192px; POSITION: absolute; TOP: 80px"
59
runat="server" DataKeyField="PROVINCE_ID" CellSpacing="2" ForeColor="Black" PageSize="5" AllowPaging="True"
60
AutoGenerateColumns="False" Width="384px" CellPadding="4" BackColor="#CCCCCC" BorderWidth="3px"
61
BorderStyle="Solid" BorderColor="#999999">
62
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
63
<ItemStyle HorizontalAlign="Center" BackColor="White"></ItemStyle>
64
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="White" BackColor="Black"></HeaderStyle>
65
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
66
<Columns>
67
<asp:TemplateColumn>
68
<HeaderTemplate>
69
<INPUT id="CheckAll" type="checkbox" runat="server" onclick="javascript:return isSelect(this.checked, this.id);">
70
</HeaderTemplate>
71
<ItemTemplate>
72
<INPUT id="DeleteThis" type="checkbox" runat="server" onclick="javascript:return isSelect(this.checked, this.id);">
73
</ItemTemplate>
74
</asp:TemplateColumn>
75
<asp:BoundColumn DataField="Province_id" HeaderText="省份编号"></asp:BoundColumn>
76
<asp:BoundColumn DataField="Province_name" HeaderText="省份名称"></asp:BoundColumn>
77
</Columns>
78
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#CCCCCC" Mode="NumericPages"></PagerStyle>
79
</asp:datagrid>
80
<asp:Button id="btnDelete" style="Z-INDEX: 102; LEFT: 344px; POSITION: absolute; TOP: 336px"
81
runat="server" Text="删除"></asp:Button></FONT></form>
82
</body>
83
</HTML>
84![]()
85
Province.aspx.cs
86![]()
87
using System;
88
using System.Collections;
89
using System.ComponentModel;
90
using System.Data;
91
using System.Data.OracleClient;
92
using System.Drawing;
93
using System.Web;
94
using System.Web.SessionState;
95
using System.Web.UI;
96
using System.Web.UI.WebControls;
97
using System.Web.UI.HtmlControls;
98![]()
99
namespace Province
100
{
101
/// <summary>
102
/// WebForm1 的摘要说明。
103
/// </summary>
104
public class WebForm1 : System.Web.UI.Page
105
{
106
protected System.Web.UI.WebControls.DataGrid MyDataGrid;
107
protected System.Web.UI.HtmlControls.HtmlInputCheckBox CheckBox;
108
109
// 成员变量
110
public string deletedIds;
111
public string ChkdItems;
112
public string ChkBxIndex;
113
public bool BxChkd = false;
114
public string[] results;
115
ArrayList CheckedItems;
116
protected System.Web.UI.WebControls.Button btnDelete;
117
118
// 声明连接变量
119
OracleConnection MyConn;
120
121
private void Page_Load(object sender, System.EventArgs e)
122
{
123
// 在此处放置用户代码以初始化页面
124
string connString = "user id=pxmis;password=pxmis;data source=pxmis;persist security info=False";
125
MyConn = new OracleConnection(connString);
126
MyConn.Open();
127
if (!Page.IsPostBack)
128
{
129
this.ViewState.Clear();
130
BindData();
131
}
132
}
133![]()
134
#region Web 窗体设计器生成的代码
135
override protected void OnInit(EventArgs e)
136
{
137
//
138
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
139
//
140
InitializeComponent();
141
base.OnInit(e);
142
}
143
144
/// <summary>
145
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
146
/// 此方法的内容。
147
/// </summary>
148
private void InitializeComponent()
149
{
150
this.MyDataGrid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.MyDataGrid_Page);
151
this.btnDelete.Click += new System.EventHandler(this.DeleteSelect);
152
this.Load += new System.EventHandler(this.Page_Load);
153![]()
154
}
155
#endregion
156![]()
157
// 数据绑定
158
public void BindData()
159
{
160
string strSQL = "select * from Province";
161
OracleDataAdapter MyDataAdapter = new OracleDataAdapter(strSQL, MyConn);
162
DataSet MyDataSet = new DataSet();
163
MyDataAdapter.Fill(MyDataSet,"Province");
164
MyDataGrid.DataSource = MyDataSet.Tables[0].DefaultView;
165
MyDataGrid.DataBind();
166
}
167
168
public void GetCheckBoxValues()
169
{
170
CheckedItems = new ArrayList();
171![]()
172
foreach (DataGridItem dgItem in MyDataGrid.Items)
173
{
174
ChkBxIndex = MyDataGrid.DataKeys[dgItem.ItemIndex].ToString();
175
CheckBox = (HtmlInputCheckBox)dgItem.FindControl("DeleteThis");
176![]()
177
if (this.ViewState["CheckedItems"] != null)
178
{
179
CheckedItems = (ArrayList)this.ViewState["CheckedItems"];
180
}
181![]()
182
if (CheckBox.Checked == true)
183
{
184
BxChkd = true;
185
186
if (!CheckedItems.Contains(ChkBxIndex))
187
{
188
CheckedItems.Add(ChkBxIndex.ToString());
189
}
190
}
191
else
192
{
193
CheckedItems.Remove(ChkBxIndex.ToString());
194
}
195
}
196
this.ViewState["CheckedItems"] = CheckedItems;
197
}
198![]()
199
public void RePopulateCheckBoxes()
200
{
201
CheckedItems = new ArrayList();
202
CheckedItems = (ArrayList)this.ViewState["CheckedItems"];
203![]()
204
if (CheckedItems != null)
205
{
206
foreach(DataGridItem dgItem in MyDataGrid.Items)
207
{
208
ChkBxIndex = MyDataGrid.DataKeys[dgItem.ItemIndex].ToString();
209![]()
210
if(CheckedItems.Contains(ChkBxIndex) == true)
211
{
212
CheckBox = (HtmlInputCheckBox)dgItem.FindControl("DeleteThis");
213
CheckBox.Checked = true;
214
}
215
216
results = (string[])CheckedItems.ToArray(typeof(string));
217
deletedIds = string.Join(",", results);
218
}
219
}
220
}
221![]()
222
private void MyDataGrid_Page(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
223
{
224
this.GetCheckBoxValues();
225
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
226
BindData();
227
this.RePopulateCheckBoxes();
228
}
229![]()
230
private void DeleteSelect(object sender, System.EventArgs e)
231
{
232
this.GetCheckBoxValues();
233![]()
234
if (BxChkd == true)
235
{
236
this.RePopulateCheckBoxes();
237
string strDelSQL = "delete from Province where Province_id in ("+deletedIds+")";
238
OracleCommand MyCommand = new OracleCommand(strDelSQL, MyConn);
239
MyCommand.ExecuteNonQuery();
240
MyConn.Close();
241
this.ViewState.Clear();
242
MyDataGrid.CurrentPageIndex = 0;
243
BindData();
244
}
245![]()
246
// 确认删除
247
this.btnDelete.Attributes.Add("onclick", "javascript:return confirmDelete(this.form);");
248
}
249
}
250
}
Province.aspx2

3
<%@ Page language="c#" Codebehind="Province.aspx.cs" AutoEventWireup="false" Inherits="Province.WebForm1" %>4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >5
<HTML>6
<HEAD>7
<title>Province</title>8
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">9
<meta content="C#" name="CODE_LANGUAGE">10
<meta content="JavaScript" name="vs_defaultClientScript">11
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">12
<script language="javascript">13
// 函数功能:全选或全不选14
function isSelect(checkboxValue, checkboxIdValue) 15
{16
var form = document.forms[0];17
for (i = 0; i < form.length; i++) {18
if (checkboxIdValue.indexOf ('CheckAll') != -1) 19
{20
if(checkboxValue == true) 21
{22
form.elements[i].checked = true;23
} 24
else 25
{26
form.elements[i].checked = false;27
}28
} 29
else if (checkboxIdValue.indexOf ('DeleteThis') != -1) 30
{31
if(form.elements[i].checked == false) 32
{33
form.elements[1].checked = false;34
} 35
}36
}37
}38
39
// 函数功能:确认删除40
function confirmDelete(form) 41
{ 42
for (i = 0; i < form.length; i++) 43
{44
if (form.elements[i].name.indexOf('DeleteThis') != -1) 45
{46
if(form.elements[i].checked) 47
{48
return confirm('确认要删除吗?');49
}50
}51
}52
}53
</script>54
</HEAD>55
<body MS_POSITIONING="GridLayout">56
<form id="Form1" method="post" runat="server">57
<FONT face="宋体">58
<asp:datagrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 192px; POSITION: absolute; TOP: 80px"59
runat="server" DataKeyField="PROVINCE_ID" CellSpacing="2" ForeColor="Black" PageSize="5" AllowPaging="True"60
AutoGenerateColumns="False" Width="384px" CellPadding="4" BackColor="#CCCCCC" BorderWidth="3px"61
BorderStyle="Solid" BorderColor="#999999">62
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>63
<ItemStyle HorizontalAlign="Center" BackColor="White"></ItemStyle>64
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="White" BackColor="Black"></HeaderStyle>65
<FooterStyle BackColor="#CCCCCC"></FooterStyle>66
<Columns>67
<asp:TemplateColumn>68
<HeaderTemplate>69
<INPUT id="CheckAll" type="checkbox" runat="server" onclick="javascript:return isSelect(this.checked, this.id);">70
</HeaderTemplate>71
<ItemTemplate>72
<INPUT id="DeleteThis" type="checkbox" runat="server" onclick="javascript:return isSelect(this.checked, this.id);">73
</ItemTemplate>74
</asp:TemplateColumn>75
<asp:BoundColumn DataField="Province_id" HeaderText="省份编号"></asp:BoundColumn>76
<asp:BoundColumn DataField="Province_name" HeaderText="省份名称"></asp:BoundColumn>77
</Columns>78
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#CCCCCC" Mode="NumericPages"></PagerStyle>79
</asp:datagrid>80
<asp:Button id="btnDelete" style="Z-INDEX: 102; LEFT: 344px; POSITION: absolute; TOP: 336px"81
runat="server" Text="删除"></asp:Button></FONT></form>82
</body>83
</HTML>84

85
Province.aspx.cs86

87
using System;88
using System.Collections;89
using System.ComponentModel;90
using System.Data;91
using System.Data.OracleClient;92
using System.Drawing;93
using System.Web;94
using System.Web.SessionState;95
using System.Web.UI;96
using System.Web.UI.WebControls;97
using System.Web.UI.HtmlControls;98

99
namespace Province100
{101
/// <summary>102
/// WebForm1 的摘要说明。103
/// </summary>104
public class WebForm1 : System.Web.UI.Page105
{106
protected System.Web.UI.WebControls.DataGrid MyDataGrid;107
protected System.Web.UI.HtmlControls.HtmlInputCheckBox CheckBox;108
109
// 成员变量110
public string deletedIds;111
public string ChkdItems;112
public string ChkBxIndex;113
public bool BxChkd = false;114
public string[] results;115
ArrayList CheckedItems;116
protected System.Web.UI.WebControls.Button btnDelete;117
118
// 声明连接变量119
OracleConnection MyConn;120
121
private void Page_Load(object sender, System.EventArgs e)122
{123
// 在此处放置用户代码以初始化页面124
string connString = "user id=pxmis;password=pxmis;data source=pxmis;persist security info=False";125
MyConn = new OracleConnection(connString);126
MyConn.Open();127
if (!Page.IsPostBack)128
{129
this.ViewState.Clear();130
BindData();131
}132
}133

134
#region Web 窗体设计器生成的代码135
override protected void OnInit(EventArgs e)136
{137
//138
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。139
//140
InitializeComponent();141
base.OnInit(e);142
}143
144
/// <summary>145
/// 设计器支持所需的方法 - 不要使用代码编辑器修改146
/// 此方法的内容。147
/// </summary>148
private void InitializeComponent()149
{ 150
this.MyDataGrid.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.MyDataGrid_Page);151
this.btnDelete.Click += new System.EventHandler(this.DeleteSelect);152
this.Load += new System.EventHandler(this.Page_Load);153

154
}155
#endregion156

157
// 数据绑定158
public void BindData()159
{160
string strSQL = "select * from Province";161
OracleDataAdapter MyDataAdapter = new OracleDataAdapter(strSQL, MyConn);162
DataSet MyDataSet = new DataSet();163
MyDataAdapter.Fill(MyDataSet,"Province");164
MyDataGrid.DataSource = MyDataSet.Tables[0].DefaultView;165
MyDataGrid.DataBind();166
}167
168
public void GetCheckBoxValues()169
{170
CheckedItems = new ArrayList();171

172
foreach (DataGridItem dgItem in MyDataGrid.Items)173
{174
ChkBxIndex = MyDataGrid.DataKeys[dgItem.ItemIndex].ToString();175
CheckBox = (HtmlInputCheckBox)dgItem.FindControl("DeleteThis");176

177
if (this.ViewState["CheckedItems"] != null)178
{179
CheckedItems = (ArrayList)this.ViewState["CheckedItems"];180
}181

182
if (CheckBox.Checked == true)183
{184
BxChkd = true;185
186
if (!CheckedItems.Contains(ChkBxIndex))187
{188
CheckedItems.Add(ChkBxIndex.ToString());189
}190
}191
else192
{193
CheckedItems.Remove(ChkBxIndex.ToString());194
}195
}196
this.ViewState["CheckedItems"] = CheckedItems;197
}198

199
public void RePopulateCheckBoxes()200
{201
CheckedItems = new ArrayList();202
CheckedItems = (ArrayList)this.ViewState["CheckedItems"];203

204
if (CheckedItems != null)205
{206
foreach(DataGridItem dgItem in MyDataGrid.Items)207
{208
ChkBxIndex = MyDataGrid.DataKeys[dgItem.ItemIndex].ToString();209

210
if(CheckedItems.Contains(ChkBxIndex) == true)211
{212
CheckBox = (HtmlInputCheckBox)dgItem.FindControl("DeleteThis");213
CheckBox.Checked = true;214
}215
216
results = (string[])CheckedItems.ToArray(typeof(string));217
deletedIds = string.Join(",", results);218
}219
}220
}221

222
private void MyDataGrid_Page(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)223
{224
this.GetCheckBoxValues();225
MyDataGrid.CurrentPageIndex = e.NewPageIndex;226
BindData();227
this.RePopulateCheckBoxes();228
}229

230
private void DeleteSelect(object sender, System.EventArgs e)231
{232
this.GetCheckBoxValues();233

234
if (BxChkd == true)235
{236
this.RePopulateCheckBoxes();237
string strDelSQL = "delete from Province where Province_id in ("+deletedIds+")";238
OracleCommand MyCommand = new OracleCommand(strDelSQL, MyConn);239
MyCommand.ExecuteNonQuery();240
MyConn.Close();241
this.ViewState.Clear();242
MyDataGrid.CurrentPageIndex = 0;243
BindData();244
}245

246
// 确认删除247
this.btnDelete.Attributes.Add("onclick", "javascript:return confirmDelete(this.form);");248
}249
}250
}

浙公网安备 33010602011771号