Gridview - невозможно получить обновленное значение ячейки для RowUpdating - PullRequest
0 голосов
/ 25 июня 2011

Я использую ItemTemplate & EditTemplate для редактирования вида сетки. (ASP.net + VB).

Я нажимаю кнопку «РЕДАКТИРОВАТЬ», затем могу установить / снять этот флажок и изменить значение текстового поля. Когда нажмете кнопку 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 ]

1 голос
/ 25 июня 2011

Наиболее вероятной причиной будет это.
Вы звоните 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
0 голосов
/ 25 июня 2011

У вас есть 2 варианта:

  1. Существует отдельный метод RowUpdated, который запускается после выполнения обновления источником данных, связанным с представлением сетки.Этот метод будет содержать новые значения для правок и вставок.
  2. Метод RowUpdating должен иметь параметр типа GridViewEventArgs .Это будет иметь свойство NewValues, которое содержит новые значения.В вашем примере это была переменная e.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...