1

次のコードはエラーなしで正常に実行されますが、グリッドから新しいデータを取得できません。ブレーク ポイントを追加し、前に進むと、変数内のデータは元のデータであり、更新されたデータではありません。私は行方不明ですか?

 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
4

1 に答える 1

1

GridViewポストバックでもデータバインドしていると思います。これにより、変更された値が上書きされます。

したがって、次の方法で Page_Load で確認します。

If Not Page.IsPostBack Then
    BindGrid()
End If

それとは別にGridViewUpdateEventArgs、 の辞書が含まれていますNewNalues

Dim passportNumber = e.NewValues("passno")

それらはデータバインドでもオーバーライドされることに注意してください。

于 2012-04-15T13:29:18.330 に答える