2013-07-18 89 views
3

我正在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 

在此,如果我從亨利編輯人名斯科特,然後按更新按鈕,然後我發現通過n名稱是僅具有價值亨利,這是調試器我編輯之前的值,而應該有我編輯的價值斯科特。

我不明白我在哪裏犯錯。

請幫幫我。

回答

2

點擊更新後,會引發兩個事件。

1.)GridView.Updating:在Update即將提交之前引發。 在這種情況下,數據庫中的數據仍未更新。基本上這個事件是爲了在Update方法實際提交更改後的數據到數據庫之前,根據需要應用一些動態更改。

2.)GridView.Updated 數據更新後立即引發此事件。所以在這種情況下,只需要輸入一個調試符號並檢查Value即可。你會看到你的新價值:斯科特。

<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 
+0

我coligues的,可是使用了更新事件和它的工作正常與他們,,我不理解可能會發生什麼 –

+0

不,編碼控制不會在更新的事件 –

+1

請確保您已設置更新事件在您的標記部分。往上看。還編輯了我的答案(最後3行)以檢查更新事件本身中的新值。 –

相關問題