繁体   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