Datagrid怎么根據(jù)選擇的checkbox編輯和更新多行記錄?
網(wǎng)友問這個問題,寫了一個簡單的例子:


前臺:


前臺:
??1
<%@?Page?language="c#"?Codebehind="WebForm4.aspx.cs"?AutoEventWireup="false"?Inherits="WebApplication25.WebForm4"?%>
??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?.NET?7.1">
??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>
?12
????????<form?id="Form1"?method="post"?runat="server">
?13
????????????<asp:DataGrid?id="DataGrid1"?runat="server"?AutoGenerateColumns="False"?DataKeyField="EmployeeID">
?14
????????????????<Columns>
?15
????????????????????<asp:TemplateColumn>
?16
????????????????????????<ItemTemplate>
?17
????????????????????????????<input?type="hidden"?id="SelectedID"?runat="server"?value='<%#?Container.ItemIndex%>'?name="SelectedID"/>
?18
????????????????????????????<asp:CheckBox?ID="chkExport"?Runat="server"?/>
?19
????????????????????????</ItemTemplate>
?20
????????????????????</asp:TemplateColumn>
?21
????????????????????<asp:BoundColumn?DataField="EmployeeID"?HeaderText="EmployeeID"></asp:BoundColumn>
?22
????????????????????<asp:TemplateColumn?HeaderText="FirstName">
?23
????????????????????????<ItemTemplate>
?24
????????????????????????????<asp:Label?ID="lab_FirstName"?Runat="server"?Text='<%#DataBinder.Eval(Container.DataItem,"FirstName")%>'>
?25
????????????????????????????</asp:Label>
?26
????????????????????????????<asp:TextBox?ID="txt_FirstName"?Runat="server"?Text='<%#DataBinder.Eval(Container.DataItem,"FirstName")%>'?Visible="False">
?27
????????????????????????????</asp:TextBox>
?28
????????????????????????</ItemTemplate>
?29
????????????????????</asp:TemplateColumn>
?30
????????????????????<asp:TemplateColumn?HeaderText="LastName">
?31
????????????????????????<ItemTemplate>
?32
????????????????????????????<asp:Label?ID="lab_LastName"?Runat="server"?Text='<%#DataBinder.Eval(Container.DataItem,"LastName")%>'>
?33
????????????????????????????</asp:Label>
?34
????????????????????????????<asp:TextBox?ID="txt_LastName"?Runat="server"?Text='<%#DataBinder.Eval(Container.DataItem,"LastName")%>'?Visible="False">
?35
????????????????????????????</asp:TextBox>
?36
????????????????????????</ItemTemplate>
?37
????????????????????</asp:TemplateColumn>
?38
????????????????</Columns>
?39
????????????</asp:DataGrid>
?40
????????????<asp:Button?id="Button1"?runat="server"?Text="編輯"></asp:Button>
?41
????????????<asp:Button?id="Button2"?runat="server"?Text="更新"></asp:Button>
?42
????????</form>
?43
????</body>
?44
</HTML>
?45
?46
后臺:
?47
?48
using?System;
?49
using?System.Collections;
?50
using?System.ComponentModel;
?51
using?System.Data;
?52
using?System.Data.SqlClient;
?53
using?System.Drawing;
?54
using?System.Web;
?55
using?System.Web.SessionState;
?56
using?System.Web.UI;
?57
using?System.Web.UI.WebControls;
?58
using?System.Web.UI.HtmlControls;
?59
?60
namespace?WebApplication25
?61

{
?62
????/**////?<summary>
?63
????///?WebForm4?的摘要說明。
?64
????///?</summary>
?65
????public?class?WebForm4?:?System.Web.UI.Page
?66
????
{
?67
????????protected?System.Web.UI.WebControls.Button?Button1;
?68
????????protected?System.Web.UI.WebControls.Button?Button2;
?69
????????protected?System.Web.UI.WebControls.DataGrid?DataGrid1;
?70
????????protected?System.Web.UI.HtmlControls.HtmlInputHidden?SelectID;
?71
????
?72
????????private?void?Page_Load(object?sender,?System.EventArgs?e)
?73
????????
{
?74
????????????//?在此處放置用戶代碼以初始化頁面
?75
????????????if(!IsPostBack)
?76
????????????
{
?77
????????????????SetBind();
?78
????????????}
?79
????????}
?80
?81
????????private?void?SetBind()
?82
????????
{
?83
????????????SqlConnection?conn=new?SqlConnection("server=srvxglai-sha;uid=sa;pwd=321413;database=northwind");
?84
????????????SqlDataAdapter?da=new?SqlDataAdapter("select?*?from?Employees",conn);
?85
????????????DataSet?ds=new?DataSet();
?86
????????????da.Fill(ds,"table1");
?87
????????????this.DataGrid1.DataSource=ds.Tables["table1"];
?88
????????????this.DataGrid1.DataBind();????????????
?89
????????}
?90
?91
?92
????????Web?窗體設(shè)計器生成的代碼#region?Web?窗體設(shè)計器生成的代碼
?93
????????override?protected?void?OnInit(EventArgs?e)
?94
????????
{
?95
????????????//
?96
????????????//?CODEGEN:?該調(diào)用是?ASP.NET?Web?窗體設(shè)計器所必需的。
?97
????????????//
?98
????????????InitializeComponent();
?99
????????????base.OnInit(e);
100
????????}
101
????????
102
????????/**////?<summary>
103
????????///?設(shè)計器支持所需的方法?-?不要使用代碼編輯器修改
104
????????///?此方法的內(nèi)容。
105
????????///?</summary>
106
????????private?void?InitializeComponent()
107
????????
{????
108
????????????this.Button1.Click?+=?new?System.EventHandler(this.Button1_Click);
109
????????????this.Button2.Click?+=?new?System.EventHandler(this.Button2_Click);
110
????????????this.Load?+=?new?System.EventHandler(this.Page_Load);
111
112
????????}
113
????????#endregion
114
115
????????private?void?Button1_Click(object?sender,?System.EventArgs?e)
116
????????
{
117
????????????foreach(DataGridItem?di?in?this.DataGrid1.Items)?
118
????????????
{?
119
????????????????if(((CheckBox)di.FindControl("chkExport")).Checked==true)?
120
????????????????
{?
121
????????????????????((TextBox)di.FindControl("txt_FirstName")).Visible=true;
122
????????????????????((TextBox)di.FindControl("txt_LastName")).Visible=true;
123
????????????????????((Label)di.FindControl("lab_FirstName")).Visible=false;
124
????????????????????((Label)di.FindControl("lab_LastName")).Visible=false;
125
????????????????}?
126
????????????}?
127
128
????????}
129
130
????????private?void?Button2_Click(object?sender,?System.EventArgs?e)
131
????????
{
132
????????????foreach(DataGridItem?di?in?this.DataGrid1.Items)?
133
????????????
{?
134
????????????????if(((CheckBox)di.FindControl("chkExport")).Checked==true)?
135
????????????????
{?
136
????????????????????if(((TextBox)di.FindControl("txt_FirstName")).Text!=((Label)di.FindControl("lab_FirstName")).Text||((TextBox)di.FindControl("txt_LastName")).Text!=((Label)di.FindControl("lab_LastName")).Text)
137
????????????????????
{
138
????????????????????????Response.Write("記錄號:"+this.DataGrid1.DataKeys[int.Parse(((HtmlInputHidden)di.FindControl("SelectedID")).Value)]+",FirstName:"+((TextBox)di.FindControl("txt_FirstName")).Text+",LastName:"+((TextBox)di.FindControl("txt_LastName")).Text+"<br>");
139
????????????????????}
140
????????????????????((TextBox)di.FindControl("txt_FirstName")).Visible=false;
141
????????????????????((TextBox)di.FindControl("txt_LastName")).Visible=false;
142
????????????????????((Label)di.FindControl("lab_FirstName")).Visible=true;
143
????????????????????((Label)di.FindControl("lab_LastName")).Visible=true;
144
????????????????????((CheckBox)di.FindControl("chkExport")).Checked=false;
145
????????????????}
146
????????????}
147
????????}
148
????}
149
}
150

??2

??3

??4

??5

??6

??7

??8

??9

?10

?11

?12

?13

?14

?15

?16

?17

?18

?19

?20

?21

?22

?23

?24

?25

?26

?27

?28

?29

?30

?31

?32

?33

?34

?35

?36

?37

?38

?39

?40

?41

?42

?43

?44

?45

?46

?47

?48

?49

?50

?51

?52

?53

?54

?55

?56

?57

?58

?59

?60

?61



?62


?63

?64

?65

?66



?67

?68

?69

?70

?71

?72

?73



?74

?75

?76



?77

?78

?79

?80

?81

?82



?83

?84

?85

?86

?87

?88

?89

?90

?91

?92


?93

?94



?95

?96

?97

?98

?99

100

101

102


103

104

105

106

107



108

109

110

111

112

113

114

115

116



117

118



119

120



121

122

123

124

125

126

127

128

129

130

131



132

133



134

135



136

137



138

139

140

141

142

143

144

145

146

147

148

149

150

posted on 2006-11-10 14:28 風(fēng)雨兼程 閱讀(389) 評論(0) 編輯 收藏 所屬分類: Asp.net