2011-03-11 5 views
0
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 

ERROR : 개체 참조GridView의이 업데이트 명령의 문제점은 무엇입니까?

+1

모자 잠금 해제 –

답변

0

문제는 예외를 던지는 kine를이다 .. 객체의 인스턴스로 설정되지 않는다. 코드를 디버그하여 값 또는 변수를 확인할 수 있습니다.

0

GridView를 사용하는 일반적인 방법은 시도한 것보다 훨씬 쉽습니다. 이없는 코드 숨김, .aspx 인 파일에 있습니다

<asp:GridView ID="myGV" DataSourceID="myDS" runat="server"/> 
<asp:SqlDataSource ID="myDS" SelectCommand="..." UpdateCommand="..." runat="server"/> 
0

귀하의 문제는 하나와

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

또는

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

또는 모두와.

아마도 lab1 또는 lab4를 할당 할 때 어떤 값도 얻지 못할 것입니다. 그러면 sql 명령 매개 변수를 할당하고 lab4.Text 값을 지정하려고 할 때 lab4 자체가 비어 있으면 throw`객체 참조가 객체 예외의 인스턴스로 설정되지 않았습니다.

하지만 그건 그냥 추측입니다. forsure를 알기 위해서는 중단 점을 설정하고 응용 프로그램을 디버깅해야합니다. 디버깅하는 동안 lab1 및 lab4의 값을 할당 한 후 확인하십시오.

희망 하시겠습니까?

관련 문제