0

为什么这不起作用?

    //::::::::::::::::::::::::::::::::::::
    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();
4

1 回答 1

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);
}
于 2012-07-19T14:33:11.823 回答