如何从dataGridView1中删除未绑定数据行?

时间:2011-11-05 07:15:13

标签: c# datagridview

我想从dataGridView1中删除未绑定数据行? 我制作了这段代码,

        private void deleteButton1_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {

                dataGridView1.Rows.Remove(row);

        }
    }

但它不起作用。请给我一些帮助代码。提前谢谢

4 个答案:

答案 0 :(得分:1)

在IDE模式下非常简单。只需在 FullRowSelect 属性中设置Datagridview的 SelectionMode ,然后在运行时只需在所需的任何选定行上按Delete键即可。它将被删除。

或者

点击按钮点击事件,点击下面的内容:

   private void button1_Click(object sender, EventArgs e)
    {
            dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);

    }

干杯

答案 1 :(得分:0)

代码应该工作,尝试在foreach循环后添加dataGridView1.Refresh();。 我测试了它,它的工作原理。 SelectedRows仅删除DgridView中选定的行

  public Form1()
  {
     InitializeComponent();

     dataGridView1.Columns.Add("ColumnA", "ColumnA");
     dataGridView1.Columns.Add("ColumnB", "ColumnB");

     dataGridView1.Rows.Add(new[] {"1colA", "1colB"});
     dataGridView1.Rows.Add(new[] { "2colA", "2colB" });
  }

  private void button1_Click(object sender, EventArgs e)
  {
     foreach (DataGridViewRow row in dataGridView1.SelectedRows)
     {

        dataGridView1.Rows.Remove(row);

     }

     dataGridView1.Invalidate();
  }

答案 2 :(得分:0)

我想你可能不应该在枚举时更改dataGrid中的行集合。您可以首先枚举dataGirdView1.SelectedRows集合以获取删除索引的行,然后实际删除它。例如:

private void deleteButton1_Click(object sender, EventArgs e)
{
    // collect deleting row indexes
    List<int> deletingRowIndexes = new List<int>();
    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
         deletingRowIndexes.Add(row.Index);
    }

    // sort indexes
    deletingRowIndexes.Sort();

    // remove rows in backward order to save rows indexes
    for(int i = deletingRowIndexes.Count - 1; i>=0; i--)
        dataGridView1.Rows.RemoveAt(deletingRowIndexes[i]);
}

答案 3 :(得分:0)

你可以尝试这样......

     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);
        }
  }