GridView怪问题,更新时读取不到编辑后的值

修改:真是好久不用.NET,都给忘了,是个基本问题,应该在Page_Load事件里改动一下,不然回传时也绑定数据就会把编辑后的给改回数据库中值了:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
    BindGridView();
}

}



    用GridView读取数据都没问题了,很奇怪的是当我用更新时,RowUpdating事件中获取控件值不成功,取到的是编辑以前的值,这样的话还怎么更新呀。怪了,弄一天了,没找到原因,各种方法都试过,慢慢弄了,代码如下:

 

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Data.OleDb;
12
13public 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
posted @ 2007-12-05 16:32  jcjks  阅读(1287)  评论(4编辑  收藏  举报