从datagridview中删除所有数据

时间:2012-07-19 13:15:37

标签: c# winforms 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.

修改

好的 - 感谢Steve等鼓励我为自己找到答案!!

uxChargeBackDataGridView.Rows.Clear();

1 个答案:

答案 0 :(得分:8)

幸运的是DataGridView为我们提供了一种方法,只需像这样调用Clear

uxDGV.Rows.Clear();

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

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

在您的代码中,您还遇到了在修改集合时迭代集合的问题。所以你需要做类似下面的事情,我们向前迭代但每次都删除零:

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