删除未绑定的数据网格视图中的多个行

时间:2009-10-19 16:48:37

标签: c# sql winforms datagridview

我有一个项目,它从SQL数据库中读取行并在datagridview中显示它们。那部分效果很好。我想通过删除网格中的每个非选定行来显示这些记录的子集。这是代码:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (!row.Selected)
    {
         if (!row.IsNewRow)
         {
              dataGridView1.Rows.Remove(row);
            //dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
         }
     }    
}

它从底部向上删除到所选区域,并在上面留下未选择的行,或者删除选定的行以及未选择的行。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

正在删除其他行,因此某些元素被错误地跳过。

您可以使用2个循环:第一个用于反转所选项目,第二个用于删除所选项目(在反转之前可能是之前未选择的项目)。

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    // invert row selections
    if (!row.Selected)
    {
        if (!row.IsNewRow)
        {
            row.Selected = true;
        }
    }
    else
    {
        row.Selected = false;
    }
}

// remove selected rows
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
    dataGridView1.Rows.Remove(row);
}