"В экземпляре объекта не задана ссылка на объект." ошибка при обновлении GridView в asp.net - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь обновить GridView из-за кода, но застрял в проблеме, которую я не понимаю, даже после бесчисленных поисков решения.

После редактирования текстового поля в GridView EditItemTemplate нажатие кнопки «Обновить» в строке вызовет событие RowUpdating. В обработчике событий RowUpdating я использую этот код, чтобы получить строку отредактированного txtBox1: Dim text1 As String = (CType(GridView1.Rows(e.RowIndex).FindControl("txtBox1"), TextBox)).Text

Я могу получить правильное значение для text1, но проблема в том, что если я напишу GridView1.DataBind () в том же четном обработчике, приведенный выше код вызовет ошибку «Ссылка на объект не установлена ​​для экземпляра объекта. " Я не мог понять, почему тот же код будет работать, если удалить / закомментировать метод GridView.DataBind ().

Я застрял с этой проблемой в течение многих дней, и я действительно буду признателен за любую помощь.

Вот мой код VB.net для обработки GridView1.RowUpdating. Это будет работать, только если я удалю или закомментирую метод GridView1.DataBind (), но GridView не будет обновляться новыми данными:

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

Мой код .aspx для GridView:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" AllowSorting="True"  
    onrowediting="GridView1_RowEditing"
    onrowcancelingedit="GridView1_RowCancelingEdit"
    onrowupdating="GridView1_RowUpdating">
    <Columns>
        <asp:CommandField ButtonType="Button" ShowEditButton="True" />
        <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" ReadOnly="True" Visible="False" />
        <asp:TemplateField HeaderText="subzone" SortExpression="zone">
            <EditItemTemplate>
                <asp:TextBox ID="txtBox1" runat="server" Text='<%# Bind("zone") %>'></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("zone") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="substation" SortExpression="station">
            <EditItemTemplate>
                <asp:TextBox ID="txtBox2" runat="server" Text='<%# Bind("station") %>'></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("station") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...