2012-04-15 11 views
1

次のコードはエラーなしで正常に実行されますが、グリッドから新しいデータを取得したり、ブレークポイントを追加したり、更新されたデータではなく、元のデータです。何が欠けていますか?VB.NETのRowUpdatingイベントが機能しない

Private Sub grvSample_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles grvSample.RowUpdating 
    Dim row As GridViewRow = DirectCast(grvSample.Rows(e.RowIndex), GridViewRow) 
    Dim passportNumber As TextBox = DirectCast(row.FindControl("txtNumber"), TextBox) 
    Dim expiry As TextBox = DirectCast(row.FindControl("txtExpiry"), TextBox) 
    Dim type As TextBox = DirectCast(row.FindControl("txtType"), TextBox) 
    Dim name As TextBox = DirectCast(row.FindControl("txtName"), TextBox) 
    Dim cinvnum As TextBox = DirectCast(row.FindControl("txtCINVNUM"), TextBox) 
    Dim last As TextBox = DirectCast(row.FindControl("txtLast"), TextBox) 
    Dim drplist As DropDownList = DirectCast(row.FindControl("DDLNat"), DropDownList) 

    Dim Conn As New SqlConnection("Data Source=ADMIN-PC;Initial Catalog=T1INV;Integrated Security=True") 

    Dim cmd As New SqlCommand("update pass_details set passnat='" & drplist.SelectedValue & "', passno='" & passportNumber.Text.Trim() & "', passexp='" & expiry.Text.Trim() & "', passtype='" & type.Text.Trim() & "', nameonpass='" & name.Text.Trim() & "', namelast='" & last.Text.Trim & "' where cinvnum='" & cinvnum.Text.Trim() & "'", Conn) ' where cinvnum='" & grvSample.Rows(e.RowIndex) & "'") 

    Try 
     Conn.Open() 
     cmd.ExecuteNonQuery() 
     ' Refresh the data 
     grvSample.EditIndex = -1 
     Dim SSQL = "select * from pass_details" 
     Dim ds As New DataSet("GET_HIS") 
     Dim adp As New SqlDataAdapter(SSQL, Conn) 
     adp.Fill(ds, "TAB_SMT") 
     grvSample.DataSource = ds.Tables("TAB_SMT") 
     grvSample.DataBind() 
    Catch ee As SqlException 

    Finally 
     cmd.Dispose() 
     Conn.Close() 
     Conn.Dispose() 
    End Try 
End Sub 
+0

postbakcsでGridViewをデータバインドしていますか?それは変更された値を無効にします。それ以外にも、 'GridViewUpdateEventArgs'にはnewvaluesの辞書が含まれています。 –

+0

はいティム、そうです、データが郵送されていない場合はバインドしていませんでした..ありがとうございました:) – SDM78

答えて

1

ポストバックでもGridViewのデータバインドを行っているとします。それは変更された値を無効にします。

だから、次のようにPage_Loadの中でそれをチェックしてください。

If Not Page.IsPostBack Then 
    BindGrid() 
End If 

は、それを除けばGridViewUpdateEventArgsからNewNaluesと辞書が含まれています。

Dim passportNumber = e.NewValues("passno") 

また、データバインドでもオーバーライドされています。

+2

ありがとうTim – SDM78

関連する問題