GridView怪问题,更新时读取不到编辑后的值
修改:真是好久不用.NET,都给忘了,是个基本问题,应该在Page_Load事件里改动一下,不然回传时也绑定数据就会把编辑后的给改回数据库中值了:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
BindGridView();
}
}
用GridView读取数据都没问题了,很奇怪的是当我用更新时,RowUpdating事件中获取控件值不成功,取到的是编辑以前的值,这样的话还怎么更新呀。怪了,弄一天了,没找到原因,各种方法都试过,慢慢弄了,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
BindGridView();
}
}用GridView读取数据都没问题了,很奇怪的是当我用更新时,RowUpdating事件中获取控件值不成功,取到的是编辑以前的值,这样的话还怎么更新呀。怪了,弄一天了,没找到原因,各种方法都试过,慢慢弄了,代码如下:
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Data.OleDb;
12
13
public partial class GridView : System.Web.UI.Page
14
{
15
private string strConn = ConfigurationManager.ConnectionStrings["CONNECTACCESS"].ConnectionString;
16
protected void Page_Load(object sender, EventArgs e)
17
{
18
BindGridView();
19
}
20
protected void myGrid_SelectedIndexChanged(object sender, EventArgs e)
21
{
22
23
}
24
protected void myGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
25
{
26
myGrid.PageIndex = e.NewPageIndex;
27
BindGridView();
28
}
29
protected void myGrid_RowEditing(object sender, GridViewEditEventArgs e)
30
{
31
myGrid.EditIndex = e.NewEditIndex;
32
BindGridView();
33
}
34
protected void myGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
35
{
36
GridViewRow myGVR = myGrid.Rows[myGrid.EditIndex];
37
OleDbConnection myConn = new OleDbConnection(strConn);
38
string strSQL = "UPDATE STUREG SET LJ='"
39
+ ((TextBox)(myGrid.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',XM='"
40
+ ((TextBox)(myGrid.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' WHERE XH='"
41
+ myGrid.DataKeys[e.RowIndex].Value.ToString() + "'";
42
OleDbCommand myCMD;
43
try
44
{
45
myConn.Open();
46
myCMD = new OleDbCommand(strSQL, myConn);
47
myCMD.ExecuteNonQuery();
48
}
49
catch (OleDbException myOLEDBe)
50
{
51
Response.Write(myOLEDBe.Message.ToString());
52
}
53
finally
54
{
55
Response.Write("<br>" + strSQL);
56
myConn.Close();
57
myGrid.EditIndex = -1;
58
BindGridView();
59
}
60
}
61
protected void myGrid_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
62
{
63
myGrid.EditIndex = -1;
64
BindGridView();
65
}
66
private void BindGridView()
67
{
68
OleDbConnection myConn = new OleDbConnection(strConn);
69
string strSQL = "SELECT * FROM STUREG ORDER BY LJ,XH";
70
OleDbDataAdapter myDA;
71
DataSet myDS = new DataSet();
72
try
73
{
74
myConn.Open();
75
myDA = new OleDbDataAdapter(strSQL, myConn);
76
myDA.Fill(myDS, "STU");
77
myGrid.DataSource = myDS.Tables["STU"];
78
myGrid.DataKeyNames = new string[] { "XH" };
79
myGrid.DataBind();
80
}
81
catch (OleDbException myOLEDBe)
82
{
83
Response.Write(myOLEDBe.Message.ToString());
84
}
85
finally
86
{
87
myConn.Close();
88
}
89
}
90
}
91
using System;2
using System.Data;3
using System.Configuration;4
using System.Collections;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11
using System.Data.OleDb;12

13
public partial class GridView : System.Web.UI.Page14
{15
private string strConn = ConfigurationManager.ConnectionStrings["CONNECTACCESS"].ConnectionString;16
protected void Page_Load(object sender, EventArgs e)17
{18
BindGridView();19
}20
protected void myGrid_SelectedIndexChanged(object sender, EventArgs e)21
{22
23
}24
protected void myGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)25
{26
myGrid.PageIndex = e.NewPageIndex;27
BindGridView();28
}29
protected void myGrid_RowEditing(object sender, GridViewEditEventArgs e)30
{31
myGrid.EditIndex = e.NewEditIndex;32
BindGridView();33
}34
protected void myGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)35
{36
GridViewRow myGVR = myGrid.Rows[myGrid.EditIndex];37
OleDbConnection myConn = new OleDbConnection(strConn);38
string strSQL = "UPDATE STUREG SET LJ='"39
+ ((TextBox)(myGrid.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',XM='"40
+ ((TextBox)(myGrid.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' WHERE XH='"41
+ myGrid.DataKeys[e.RowIndex].Value.ToString() + "'";42
OleDbCommand myCMD;43
try44
{45
myConn.Open();46
myCMD = new OleDbCommand(strSQL, myConn);47
myCMD.ExecuteNonQuery();48
}49
catch (OleDbException myOLEDBe)50
{51
Response.Write(myOLEDBe.Message.ToString());52
}53
finally54
{55
Response.Write("<br>" + strSQL);56
myConn.Close();57
myGrid.EditIndex = -1;58
BindGridView();59
}60
}61
protected void myGrid_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)62
{63
myGrid.EditIndex = -1;64
BindGridView();65
}66
private void BindGridView()67
{68
OleDbConnection myConn = new OleDbConnection(strConn);69
string strSQL = "SELECT * FROM STUREG ORDER BY LJ,XH";70
OleDbDataAdapter myDA;71
DataSet myDS = new DataSet();72
try73
{74
myConn.Open();75
myDA = new OleDbDataAdapter(strSQL, myConn);76
myDA.Fill(myDS, "STU");77
myGrid.DataSource = myDS.Tables["STU"];78
myGrid.DataKeyNames = new string[] { "XH" };79
myGrid.DataBind();80
}81
catch (OleDbException myOLEDBe)82
{83
Response.Write(myOLEDBe.Message.ToString());84
}85
finally86
{87
myConn.Close();88
}89
}90
}91





浙公网安备 33010602011771号