[英]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.