C# 删除数据集中的选定行

C# 删除数据集中的选定行,c#,C#,我在删除数据表中的选定行时遇到一些问题。我在这个网站上也参考了其他几个例子,但它们都会导致我所有的数据从数据库中被删除。关于如何删除从数据库文件中拉入的选定行,有什么建议吗 private void btnDelete_Click(object sender, EventArgs e) { OleDbConnection connection = new OleDbConnection(); connection.ConnectionString = @

我在删除数据表中的选定行时遇到一些问题。我在这个网站上也参考了其他几个例子,但它们都会导致我所有的数据从数据库中被删除。关于如何删除从数据库文件中拉入的选定行,有什么建议吗

 private void btnDelete_Click(object sender, EventArgs e)
    {
        OleDbConnection connection = new OleDbConnection();
        connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=S:\Docket\Database1.accdb;
        Persist Security Info=False;";
        string strSQL = "Select * from login";
        OleDbCommand cmd = new OleDbCommand(strSQL, connection);
        connection.Open();
        cmd.CommandType = CommandType.Text;
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
        {
            dataGridView1.Rows.RemoveAt(item.Index);
        }
        da.Update(dt);
    }

编辑:显示从表中删除的项目的更新代码。我应该澄清一下,我想从datagrid和数据库中删除任何选择的选项,上面的代码只会从用户在屏幕上看到的内容中删除它们。我猜我的字符串选择了数据库中需要修改的所有内容,但我不确定要修改它说什么。

您需要将foreach更改为:

 foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
 {
    dataGridView1.Rows.RemoveAt(item.Index);
 }

您需要将foreach更改为:

 foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
 {
    dataGridView1.Rows.RemoveAt(item.Index);
 }

您需要将foreach更改为:

 foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
 {
    dataGridView1.Rows.RemoveAt(item.Index);
 }

您需要将foreach更改为:

 foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
 {
    dataGridView1.Rows.RemoveAt(item.Index);
 }


您正在尝试删除登录表中的所有内容(您的查询选择所有行),还是仅删除选定行。您可以修改原始查询以选择所需的行,或者在删除之前检查数据。我怀疑这是否会运行<代码>dataGridView1。SelectedRows返回一个值。如果在
foreach
中循环它,则得到的是
DataGridViewRow
而不是
DataRow
。您可以将
DataBoundItem
强制转换为
DataRow
。此外,您想从表中删除行还是从数据库中删除行,第三个选项:从
DataGridView
中删除行。你到底想做什么?我的目标是将它们完全从数据库中删除。更新的代码显示它们已从datagrid中删除,但未从数据库中删除。您是尝试删除登录表中的所有内容(您的查询选择所有行),还是仅删除选定的行。您可以修改原始查询以选择所需的行,或者在删除之前检查数据。我怀疑这是否会运行<代码>dataGridView1。SelectedRows返回一个值。如果在
foreach
中循环它,则得到的是
DataGridViewRow
而不是
DataRow
。您可以将
DataBoundItem
强制转换为
DataRow
。此外,您想从表中删除行还是从数据库中删除行,第三个选项:从
DataGridView
中删除行。你到底想做什么?我的目标是将它们完全从数据库中删除。更新的代码显示它们已从datagrid中删除,但未从数据库中删除。您是尝试删除登录表中的所有内容(您的查询选择所有行),还是仅删除选定的行。您可以修改原始查询以选择所需的行,或者在删除之前检查数据。我怀疑这是否会运行<代码>dataGridView1。SelectedRows返回一个值。如果在
foreach
中循环它,则得到的是
DataGridViewRow
而不是
DataRow
。您可以将
DataBoundItem
强制转换为
DataRow
。此外,您想从表中删除行还是从数据库中删除行,第三个选项:从
DataGridView
中删除行。你到底想做什么?我的目标是将它们完全从数据库中删除。更新的代码显示它们已从datagrid中删除,但未从数据库中删除。您是尝试删除登录表中的所有内容(您的查询选择所有行),还是仅删除选定的行。您可以修改原始查询以选择所需的行,或者在删除之前检查数据。我怀疑这是否会运行<代码>dataGridView1。SelectedRows返回一个值。如果在
foreach
中循环它,则得到的是
DataGridViewRow
而不是
DataRow
。您可以将
DataBoundItem
强制转换为
DataRow
。此外,您想从表中删除行还是从数据库中删除行,第三个选项:从
DataGridView
中删除行。你到底想做什么?我的目标是将它们完全从数据库中删除。更新后的代码显示它们已从datagrid中删除,但未从数据库中删除。我尝试使用(item.Index),但它不接受.Index,因此我假设我错误地编写了foreach语句。这个选项是否只是从datagrid而不是从数据库中删除所选项目?将
DataRow
更改为
DataGridViewRow
,您将得到我的加号。这不是从datagrid中删除该行吗?而不是从datatable中删除它们。@paul:似乎这就是OP真正想要做的:“…删除datatable中的选定行…”因此他不想删除,而是将其删除。:)我关注的是“如何删除从数据库文件中拉入的选定行”,并假设它是从数据库表中删除的。我尝试使用(item.Index)它不会接受.Index,所以我假设我写的foreach语句不正确。这个选项会不会从datagrid而不是数据库中删除所选的项?将
DataRow
更改为
DataGridViewRow
,您会得到我的加号。这不会只是从datagrid中删除该行,而不是删除它们从datatable中删除。@paul:看起来OP实际上想做的是:“…删除datatable中的选定行…”,所以他不想删除,而是删除它们。:)我专注于“如何删除从数据库文件中拉入的选定行”,并假设它是从数据库表中删除的。我尝试使用(item.Index)它不会接受.Index,所以我假设我写的foreach语句不正确。这个选项会不会从datagrid而不是数据库中删除所选的项?将
DataRow
更改为
DataGridViewRow
,您会得到我的加号。这不会只是从datagrid中删除该行,而不是删除它们从datatable中删除。@paul:看起来OP实际上想做的是:“…删除datatable中选定的行…”,所以他不想删除,而是删除它们。:)我重点讨论了“如何删除sel”