Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否删除datagrid和数据库中的选定行?_C#_Wpf_Datagridview_Datagrid - Fatal编程技术网

C# 是否删除datagrid和数据库中的选定行?

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,但出现以下错误:

我想在datagridview中选择一行时从数据库中删除。 我尝试了两种不同的方法。 使用此方法,我只能删除几行

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
绑定到可以用作循环项集合的对象?