В чем проблема в этой команде обновления GridView? - PullRequest
0 голосов
/ 11 марта 2011
Imports System.Data.SqlClient

    Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True"


Protected Sub GridView1_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles GridView1.RowUpdated
        For Each myRow As GridViewRow In GridView1.Rows
            'Find the checkbox
            Dim lab1 As Label = DirectCast(myRow.FindControl("Label1"), Label)
            Dim lab4 As Label = DirectCast(myRow.FindControl("Label4"), Label)
            Try
                Using conn = New SqlConnection(constr)
                    Using cmd = conn.CreateCommand()
                        conn.Open()
                        Dim sql As String = "UPDATE a1_volvo SET travel = @travel WHERE travelid = @travelid"
                        cmd.CommandText = sql
                        cmd.Parameters.AddWithValue("@travel", lab4.Text)
                        cmd.Parameters.AddWithValue("@travelid", lab1.Text)
                        cmd.ExecuteNonQuery()
                    End Using
                End Using
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
        Next
    End Sub

ОШИБКА: ссылка на объект не установлена ​​на экземпляр объекта ..

Ответы [ 3 ]

0 голосов
/ 11 марта 2011

Обычный способ использования GridView намного проще, чем вы пытались.Это в файле .aspx, а не в коде:

<asp:GridView ID="myGV" DataSourceID="myDS" runat="server"/>
<asp:SqlDataSource ID="myDS" SelectCommand="..." UpdateCommand="..." runat="server"/>
0 голосов
/ 11 марта 2011

Ваша проблема либо с

Dim lab1 As Label = DirectCast(myRow.FindControl("Label1"), Label)

или

Dim lab4 As Label = DirectCast(myRow.FindControl("Label4"), Label)

или с обоими.

Вероятно, что происходит, когда вы назначаете вашу lab1 или lab4, она не получает никаких значений, а затем, когда вы пытаетесь назначить параметр команды sql и задаете значение lab4.Text, если сама lab4 пуста, она сгенерирует `Ссылка на объект не установлена ​​на экземпляр исключения объекта.

Но это только предположение. Чтобы знать наверняка, вам нужно установить точку останова и отладить ваше приложение. Во время отладки проверьте значения lab1 и lab4 после назначения.

Надеюсь, это поможет

0 голосов
/ 11 марта 2011

Проблема в кине, который выдает исключение.Вы можете отладить свой код, чтобы проверить значения или переменные.

...