Vb.net GridView行更新可以';t获取新值,它只获取旧值

Vb.net GridView行更新可以';t获取新值,它只获取旧值,vb.net,asp.net-mvc-4,Vb.net,Asp.net Mvc 4,我有以下代码: Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating Dim strPersonID As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("TextBox1"), TextBox).Text Di

我有以下代码:

 Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
    Dim strPersonID As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("TextBox1"), TextBox).Text
    Dim s As String=e.NewValues[1].ToString()
    Dim strLastName As String = DirectCast(GridView1.Rows(e.RowIndex).FindControl("TextBox2"), TextBox).Text
    Dim command As SqlCommand = New SqlCommand("updatetest", cn)
    command.CommandType = CommandType.StoredProcedure
    command.Parameters.AddWithValue("@pid", strPersonID)
    command.Parameters.AddWithValue("@pfirstname", strLastName)
    If cn.State = ConnectionState.Closed Then
        cn.Open()
    End If
    command.ExecuteNonQuery()
    If cn.State = ConnectionState.Open Then
        cn.Close()
    End If
End Sub
问题是,事件行更新正在返回旧值,因此如何获取更新的新值?请注意,编程没有运行事件行更新

有什么帮助吗


谢谢:)

当触发
行更新
事件时,更改尚未提交回数据源。这是一个活动,旨在为您提供一个验证输入的机会,并在需要时阻止更改的进行

其中有两个字典,
OldValues
NewValues
。您可以通过如下方式循环它们,找出发生了什么变化:

For Each key As String In e.OldValues.Keys
    If e.OldValues(key) <> e.NewValues(key) Then
        MessageBox.Show(key & " has changed: Old Value = " & e.OldValues(key) & "; New Value = " & e.NewValues(key))
    End if
Next
e.OldValues.Keys中每个键作为字符串的

如果e.OldValues(键)e.NewValues(键),则
MessageBox.Show(键和“已更改:旧值=“&e.OldValues(键)”和“新值=“&e.NewValues(键))
如果结束
下一个
这是大脑编译器,但我认为语法是正确的