简体   繁体   English

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

[英]How to Delete row of unbound data from dataGridView1?

i want to Delete row of unbound data from dataGridView1? 我想从dataGridView1删除未绑定数据行吗? I made this code, 我写了这段代码,

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

                dataGridView1.Rows.Remove(row);

        }
    }

But it's not working. 但这不起作用。 Please suggest me some helping code. 请给我建议一些帮助代码。 thanks in advance 提前致谢

It's Quite simple on IDE Mode. 在IDE模式下非常简单。 Just set SelectionMode of Datagridview at FullRowSelect property and on runtime just press Delete Key on Whichever selected Rows you want. 只需在FullRowSelect属性中设置Datagridview的SelectionMode ,然后在运行时只需在想要的任何选定行上按Delete键即可。 and it will get deleted. 它将被删除。

Or 要么

Try some thing like below on button click event: 在按钮点击事件上尝试以下类似操作:

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

    }

Cheers 干杯

code should work, try add dataGridView1.Refresh(); 代码应该工作,尝试添加dataGridView1.Refresh(); after foreach loop. 在foreach循环之后。 I tested it and it works. 我对其进行了测试,并且可以正常工作。 SelectedRows is delete only selected Rows in DgridView 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();
  }

I think possibly you should not change collection of rows in dataGrid while enumerating it. 我认为您可能不应该在枚举时更改dataGrid中的行集合。 You may firstly enumerate through dataGirdView1.SelectedRows collection to get rows to delete indexes, and then actually delete it. 您可以首先通过dataGirdView1.SelectedRows集合枚举以获取要删除索引的行,然后实际将其删除。 For example: 例如:

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

you can try like this.... 你可以这样尝试...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM