2012-07-19 68 views
0

为什么不能正常工作?删除datagridview中的所有数据

//:::::::::::::::::::::::::::::::::::: 
    private void uxClearButton_Click(object sender, EventArgs e) 
    { 
     clearDGV(); 
    } 
    void clearDGV() 
    { 
     // remove selected rows 
     foreach (DataGridViewRow row in uxDGV.Rows) 
     { 
      uxDGV.Rows.Remove(row); 
     } 
    } 
    //::::::::::::::::::::::::::::::::::: 

DGV没有被绑定,用户已经输入了信息。

错误我得到的是InvalidOperationException was unhandled Uncommitted new row cannot be deleted.

编辑

确定 - 感谢史蒂夫等鼓励我找到了答案我自己!

uxChargeBackDataGridView.Rows.Clear(); 
+0

为什么不清除所有的行? – roymustang86 2012-07-19 13:17:35

+0

可能的重复[如何清除DataGridView中的行与C#?](http://stackoverflow.com/questions/6184402/how-can-i-clear-rows-in-datagridview-with-c) – 2012-07-19 13:18:30

+4

您可以使用foreach循环并在循环中循环从同一集合中删除项目 – Steve 2012-07-19 13:19:45

回答

8

幸运的是DataGridView提供为我们做到这一点的方法,只需调用Clear像这样:

uxDGV.Rows.Clear(); 

原因你让你的错误是因为你试图删除未提交的新行。 (一旦知道问题,错误实际上很好,并且信息丰富!)

新行由DataGridView行上的布尔型IsNewRow属性标识。

在您的代码中,您还有在修改集合时迭代集合的问题。所以你需要做一些像下面这样的事情,在这里我们迭代前进,但每次都在零时删除:

int rowCount = dataGridView1.Rows.Count; 
for (int n = 0; n < rowCount; n++) 
{ 
    if (dataGridView1.Rows[0].IsNewRow == false) 
     dataGridView1.Rows.RemoveAt(0); 
} 
相关问题