Что вы делаете, удаление выбранных строк только от DataGridView
.
Вы не производите вызов базы данных для удаления строк.
Предполагаю, что вы используете сервер Microsoft SQL.
В этом случае вам нужно будет получить то, что однозначно идентифицирует продукт. Например, идентификатор продукта.
Предполагая, что у вас есть столбец ProductId
из базы данных, связанный с некоторым столбцом в DataGridView
.
Ваш код должен быть следующим.
//string variable to capture product Ids for selected products
System.Text.StringBuilder productIds = new System.Text.StringBuilder(string.empty);
for (int i = 0; i < Products.Rows.Count; i++)
{
DataGridViewRow dr = Products.Rows[i];
if (dr.Selected == true)
{
Products.Rows.RemoveAt(i);
productIds.Append(productIds.length > 0 ? "," + Convert.ToString(dr["ProductId"]) : Convert.ToString(dr["ProductId"]));
}
}
DeleteProducts(productIds.ToString());
Теперь ваш метод DeleteProducts
должен быть следующим.
private int DeleteProducts(string productIds)
{
int recordsDeleted = 0;
using (SqlConnection conn = new SqlConnection("Your connection string here"))
{
try
{
using (SqlCommand cmd = new SqlCommand("Your SQL Stored Procedure name here", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramProductIds = new SqlParameter("@productIds", varchar(2000));
paramProductIds.Value = productIds;
cmd.Parameters.Add(paramProductIds);
conn.Open();
recordsDeleted = cmd.ExecuteNonQuery();
}
}
finally { conn.Close(); }
}
return recordsDeleted;
}
И ваша хранимая процедура должна быть такой, как указано ниже (Предполагая MS SQL Server).
CREATE PROCEDURE DeleteProducts
@productIds VARCHAR(2000)
AS
BEGIN
DELETE FROM Products WHERE ProductId IN (SELECT item FROM dbo.Split(',', @productIds))
END
Чтобы удалить выбранные строки, вам необходимо сделать вызов базы данных. –
База данных уже существует и загружается при запуске приложения. Проблема заключается в том, что при удалении 1 или более флажков строк с помощью кнопки «Удалить» эти строки исчезают, но снова будут возвращены, если я перезапущу программу. Любые идеи, как я могу обновить эти изменения в базе данных? – SarahF
Можете ли вы указать, какую базу данных вы используете. MS SQL Server или MySQL или Oracle и т. Д.? –