C# 是否删除datagrid和数据库中的选定行?
我想在datagridview中选择一行时从数据库中删除。 我尝试了两种不同的方法。 使用此方法,我只能删除几行C# 是否删除datagrid和数据库中的选定行?,c#,wpf,datagridview,datagrid,C#,Wpf,Datagridview,Datagrid,我想在datagridview中选择一行时从数据库中删除。 我尝试了两种不同的方法。 使用此方法,我只能删除几行 cmd.CommandText = "delete from dbo.Scenarist where idScenarist=@idScenarist"; cmd.Parameters.Add(new SqlParameter("@idScenarist", dataGridScenarist.SelectedIndex)); 我也尝试了SelectedRows,但出现以下错误:
cmd.CommandText = "delete from dbo.Scenarist where idScenarist=@idScenarist";
cmd.Parameters.Add(new SqlParameter("@idScenarist", dataGridScenarist.SelectedIndex));
我也尝试了SelectedRows,但出现以下错误:
“System.Windows.Controls.DataGrid”不包含的定义
“SelectedRow”和没有扩展方法“SelectedRow”接受第一个
找不到类型为“System.Windows.Controls.DataGrid”的参数
(是否缺少using指令或程序集引用?)
是WPF应用程序,我无法使用DataGridView。只能使用DataGrid。
谢谢大家! 您可能希望在此处使用
DataGridView
。它提供对SelectedRows
的访问,这是DataGridViewRow
s的集合。循环遍历该集合,并使用包含相应id的列中的值更新@idScenarist
参数,然后在每个循环中执行delete命令对象
以下是一个基本示例:
cmd.CommandText = "delete from dbo.Scenarist where idScenarist=@idScenarist";
SqlParameter parm = new SqlParameter("@idScenarist", SqlDbType.Int);
cmd.Parameters.Add(parm);
foreach (DataGridViewRow row in dataGridScenarist.SelectedRows)
{
parm.Value = row.Cells["idScenarist"].Value;
cmd.ExecuteNonQuery();
}
或者最好还是使用“in”语法并进行一次调用。为此,您必须对每个参数进行字符串连接,并为每个值添加一个参数对象。完全可行,并且取决于您的应用程序,可能是一种更好的方法。我的偏好是,在处理未知的最大值时,不要动态构建SQL查询。如果使用linq
var result=String.Join(“,”,rows.select(r=>r.id.ToString())代码>你可以一次完成,但最好不要知道删除集的大小。我不能使用DataGridView,因为它是一个WPF应用程序!我可以看看其他的方法,但是我需要你提供更多的信息。您是否已将您的DataGrid
绑定到可以用作循环项集合的对象?