簡體   English   中英

C#-刪除選定的DataGridView行

[英]C# - delete a selected DataGridView row

我有以下代碼,當我從DataGridView中選擇一行時,我想從MSSQL數據庫中刪除。 關鍵是,代碼正在(部分地)運行,但是在我關閉表單並重新打開它之后,記錄仍然存在,並且數據庫尚未更新。 有什么問題嗎? 謝謝。

try
{
    if (MessageBox.Show("Doriti sa stergeti autogara?", "Stergere", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        foreach (DataGridViewRow item in this.grdAutogari.SelectedRows)
        {
            grdAutogari.Rows.RemoveAt(item.Index);
        }
    }
}
catch (Exception er) { MessageBox.Show(er.Message);}

正如您已經說過的那樣,您的代碼在部分起作用,並且germi也正確地指出,您沒有將更改寫入數據庫。

一種方法是執行以下操作:

收集集合中所有選定的行ID。 在您的sql服務器的delete語句中使用該集合。

if (MessageBox.Show("Doriti sa stergeti autogara?", "Stergere", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
    //parameters cant be System.Int32[]
    var IdsToDelete = new List<string>();
    foreach (DataGridViewRow item in this.grdAutogari.SelectedRows)
    {
        grdAutogari.Rows.RemoveAt(item.Index);
        //you probably need to use item.ID or the column that holds your 
        //Primary key for your sql statement
        IdsToDelete.Add(item.Index.ToString());
    }
    //assuming you have a DataContext of some sort. 
    //Maybe Entity Framework or Linq-To-Sql
    db.ExecuteCommand("delete from [YOURTABLENAME] where YOURTABLENAME.Id in ({0})", IdsToDelete.ToArray());
}

這將刪除服務器上所有選定的行。 如果沒有上下文,則可能需要應用其他技術。

在此處可以找到使用AdventureWorks數據庫的小型演示: http : //share.linqpad.net/767on5.linq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM