#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);