[英]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
嘗試此操作基於Windows窗體應用程序中使用C#和VB.Net的CheckBox選擇從DataGridView刪除多行
在此鏈接中,它刪除選定的行。在此復選框中,用於刪除行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.