从gridview中的文本框获取之前的值

时间:2013-07-18 04:58:54

标签: asp.net .net vb.net visual-studio-2008 gridview

我正在gridview上应用编辑功能。

当我的代码控制在rowupdating事件中时,我发现我从文本框中获取了以前的值(即在我在文本框中进行编辑之前的值)。

以下是我的代码:

Protected Sub gvBooking_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvBooking.RowUpdating
            'Dim name As String = DirectCast(gvBooking.Rows(e.RowIndex).FindControl("txtperson1"), TextBox).Text
            Dim nname As String = (gvBooking.DataKeys(e.RowIndex).Values("person_name").ToString)
            Dim id As Integer = Integer.Parse(gvBooking.DataKeys(e.RowIndex).Value.ToString)
            Dim carname As String = gvBooking.DataKeys(e.RowIndex).Values("car_name").ToString

            Dim carac As String = ""


            'Dim sql As String = ""
            'sql = "update dbo.tbl_Book set person_name='" + name + "',ac_type='" + carac + "' where booking_id = " + id.ToString
            'gc.ExecuteCommand(sql)
            'gvBooking.EditIndex = -1
            'gc.BindGridView(gvBooking, "select * from tbl_Book")
        End Sub

在这里,如果我编辑从亨利到斯科特的人名,然后按更新按钮,那么我通过调试器找到nname只有亨利值,这是我编辑之前的值,而不是它应该有值斯科特我编辑过。

我不明白我在哪里弄错了。

请帮帮我。

1 个答案:

答案 0 :(得分:2)

单击“更新”后,将引发两个事件。

1。)GridView.Updating:在即将提交更新之前引发。     在这种情况下,数据仍未在数据库中更新。基本上,此事件用于在Update方法实际将更改的数据提交到数据库之前,在需要时应用某些动态更改。

2。)GridView.Updated     数据更新后立即引发此事件。因此,仅在此事件中您放置调试符号并检查值。你会看到你的新价值:Scott。

 <asp:GridView ID="GridView1" runat="server" OnRowUpdated="GridView1_RowUpdated"></asp:GridView>    

当您在更新时检查数据时。这就是您只获取原始值的原因。在GridView1_RowUpdated()方法内部仅检查新值。

此外,如果您想在更新事件中检查新值,请使用GridViewUpdateEventArgs.NewValues Property [e.Newvalues]:[在此处MSDN检查]

  string s = e.NewValues[1].ToString(); // 2nd Column // c# sample