2012-07-19 59 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); 
} 
相關問題