Я пытаюсь обновить 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>