“你调用的对象是空的。”在asp.net中更新GridView时出现错误

时间:2018-10-31 10:08:16

标签: asp.net vb.net gridview

我正在尝试从后面的代码更新GridView,但遇到了一个问题,即使经过无数次搜索,我仍然无法理解。

在GridView EditItemTemplate中编辑文本框后,单击行中的“更新”按钮将触发RowUpdating事件。在RowUpdating事件处理程序中,我使用以下代码来获取已编辑的txtBox1的字符串: using IPclass = NetworkClass<tcp::socket>;

我能够获得正确的text1值,但问题是,如果我在同一偶数处理程序中编写GridView1.DataBind(),则上面的代码将导致错误“对象引用未设置为对象的实例。 ”我不明白,如果删除/注释GridView.DataBind()方法,为什么相同的代码也会起作用。

这个问题困扰了我很多天,我将非常感谢您的帮助。

这是我的VB.net代码,用于处理GridView1.RowUpdating。仅当我删除或注释掉GridView1.DataBind()方法但不会用新数据更新GridView时,这才起作用:

Dim text1 As String = (CType(GridView1.Rows(e.RowIndex).FindControl("txtBox1"), TextBox)).Text

我的GridView的.aspx代码:

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
    Dim text1 As String = (CType(GridView1.Rows(e.RowIndex).FindControl("txtBox1"), TextBox)).Text
    Dim text2 As String = (CType(GridView1.Rows(e.RowIndex).FindControl("txtBox2"), TextBox)).Text
    Dim IDkey As String = GridView1.DataKeys(e.RowIndex).Values(0).ToString()

    Dim sqlquery As String = "UPDATE tblPMU SET zone = '" & text1 & "', substation ='" & text2 & "' WHERE (ID ='" & IDKey & "')"
    Dim sqlCmd As New SqlCommand(sqlquery, conn)
    Dim sqlDa As New SqlDataAdapter(sqlCmd)

    conn.open()
    Dim dt As New DataTable()
    sqlDa.Fill(dt)
    conn.Close()

    GridView1.EditIndex = -1
    UpdateGridview()
    GridView1.DataBind()

    Label5.Text=text1

End Sub

0 个答案:

没有答案