你在做什麼被刪除所選行僅限於DataGridView
。
你沒有做任何數據庫調用刪除行。
我假設你正在使用Microsoft SQL Server。
在您需要獲得一個唯一標識產品的一些情況。例如產品ID。
假設您已將數據庫中的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等? –