Почему управление обновлением Gridview работает ненормально?

#c# #sql #asp.net #model-view-controller

#c# #sql #asp.net #model-view-controller

Вопрос:

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

Это изображение, демонстрирующее то, что происходит.

Код:

 protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    bindgrid();
  }
}

private void bindgrid()
{
  con.Open();

  MySqlCommand cmd = con.CreateCommand();
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = "select * from vendor";

  MySqlDataReader dr = cmd.ExecuteReader();

  DataTable dt = new DataTable();
  dt.Load(dr);

  GridView1.DataSource = dt;
  GridView1.DataBind();

  con.Close();
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
  GridView1.EditIndex = e.NewEditIndex;
  bindgrid();
}
  

И это ASPX-код:

 <asp:TemplateField>
  <ItemTemplate>
    <asp:Button Text="Edit Element" CssClass="btn btn-success fa fa-edit" ID="Editbutton" runat="server" CommandName="Edit" />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:Button Text="Update" CssClass="btn btn-success fa fa-edit" ID="updatebutton" runat="server" CommandName="Update" />
    <asp:Button Text="Cancel" CssClass="btn btn-warning fa fa-close" ID="cancelbutton" runat="server" CommandName="Cancel" />
  </EditItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Vendor ID">
  <ItemTemplate>
    <asp:Label ID="idlbl" runat="server" Text='<%# Eval("v_id")%>'></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:TextBox ID="idtext" runat="server" Text='<%# Eval("v_id")%>'></asp:TextBox>
  </EditItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Vendor Name">
  <ItemTemplate>
    <asp:Label ID="namelbl" runat="server" Text='<%# Eval("v_name")%>'></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:TextBox ID="nametext" runat="server" Text='<%# Eval("v_name")%>'></asp:TextBox>
  </EditItemTemplate>
</asp:TemplateField>
  

Комментарии:

1. Должен ли я добавить aspx тоже?

2. На самом деле вы использовали событие редактирования строки gridview, поэтому из-за этого его функциональность просмотра сетки при нажатии на Редактировать изменит метку на текстовое поле и добавит кнопку Обновления и отмены

3. Теперь я получаю эту ошибку. Ссылка на объект не установлена для экземпляра объекта.

4. Есть ли у вас событие Row_Updating?

5. да, я добавил событие обновления.