Как я могу удалить выбранную строку DataGridView из базы данных?

#c# #sql-server #winforms

#c# #sql-сервер #winforms

Вопрос:

У меня есть форма Windows Forms с DataGridView . У DataGridView есть DataGridViewButtonColumn , и у меня есть база данных (идентификатор с автоинкрементом).

Я могу удалить ее из DataGridView .

 private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e) {
   if (e.ColumnIndex == Delete.Index) {
      dgv.Rows.Remove(dgv.Rows[e.RowIndex]);
   }
}
  

Как я могу удалить ее из базы данных?

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

1. В чем именно заключается проблема? Что вы пробовали? Используете ли вы картограф OR?

2. Вы используете datatable в качестве источника данных? Затем уберите со стола.

Ответ №1:

Вы должны установить уникальный идентификатор вашей базы данных в качестве командного аргумента для вашей кнопки cell и при вызове команды delete просто передать этот идентификатор, чтобы удалить эту запись из базы данных.

 <asp:Button ID="btnCellDelete" runat="server" CommandArgument = "<%# Eval("DB_ID")%>" Text="Delete Row" />
  

Получить значение в серверной части:

 var item = (Button)e.Row.DataItem;
var dbID  = item.CommandArgument.ToStrng();
  

и вы также можете выполнить удаление базы данных при событии нажатия кнопки.

Ответ №2:

Вы можете использовать SQL-запрос, чтобы удалить ее из базы данных. Получите выбранные элементы datagridview и запустите запрос на удаление следующим образом:

 int id= this.dataGridView1.SelectedItems[0].Text;

con.Open();
cmd.Connection = con;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@id", id);
cmd.CommandText = "delete from data where id=@id";
cmd.ExecuteNonQuery();
  

Я не знаю, какой метод вы используете, но вы можете удалить его с помощью LINQ следующим образом:

 Product deleteProduct = northWind.Products.First(u => u.ProductID == id);

northWind.Products.DeleteOnSubmit(deleteProduct);