Gridview - 无法获取RowUpdating的更新单元格值

时间:2011-06-25 06:58:45

标签: asp.net vb.net gridview

我正在使用ItemTemplate& EditTemplate用于编辑gridview。 (ASP.net + VB)。

我单击EDIT按钮然后我可以选中/取消选中这些复选框并修改文本框值。 单击UPDATE按钮时,它将触发RowUpdating事件,但是我发现当我获得update语句的值时,它仍然在编辑之前获取值,而不是更新值。

我如何获得最新的&更新价值?谢谢。 乔

以下是VB代码:

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)

    'Update the values.
    Dim row = Gridview1.Rows(e.RowIndex)

    Dim Col1_SL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_SL"), CheckBox)
    Dim Col1_VL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_VL"), CheckBox)
    Dim Col1_ML = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_ML"), CheckBox)
    Dim Col1_PH = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_PH"), CheckBox)
    Dim Col1_APH = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_APH"), CheckBox)
    Dim Col1_TOIL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_TOIL"), CheckBox)
    Dim Col1_Others = CType(Gridview1.Rows(e.RowIndex).FindControl("tb1_Others"), TextBox)
    Dim Col1_RosterKey = CType(Gridview1.Rows(e.RowIndex).FindControl("lb1_rosterkey"), Label)

    Using conn As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("hris_shiftdutyConnectionString").ConnectionString)
        conn.Open()
        cmd.Connection = conn
        sql = "SET DATEFORMAT dmy;UPDATE troster SET SL='" & Convert.ToInt32(Col1_SL.Checked) & "' where roster_key='" & Col1_RosterKey.Text & "';"
        cmd.CommandText = Sql
        reader = cmd.ExecuteReader()
        conn.Close()
        reader.Close()
    End Using

    'Reset the edit index.
    Gridview1.EditIndex = -1

    'Bind data to the GridView control.
    BindData()
End Sub

2 个答案:

答案 0 :(得分:1)

最可能的原因是这个。
您在BindData()上呼叫Page_Load而未使用!IsPostBack

Protected Sub Page_Load Handles Me.Load
    If Not IsPostBack
        ' Bind Grid only at the first load
        ' Do not load Grid again at Postbacks
        BindData()
    End If
End Sub

答案 1 :(得分:0)

您有两个选择:

  1. 在绑定到网格视图的数据源执行更新后,会触发一个单独的RowUpdated方法。此方法将包含编辑和插入的新值。
  2. RowUpdating方法应具有类型GridViewEventArgs的参数。这将有一个名为NewValues的属性,其中包含新值。在您的示例中,这是变量e