【问题标题】:Deleting all the data from a datagridview从datagridview中删除所有数据
【发布时间】:2012-07-19 13:15:36
【问题描述】:

为什么这不起作用?

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

【问题讨论】:

  • 您不能使用 foreach 在集合上循环,并且在循环内从同一个集合中删除项目
  • 尝试向后迭代项目并删除每个项目。 for (int x = uxDGV.Rows.Count; x > 0; x--)
  • @SeanBright ...该问题看起来与 bound datagridview 相关;我的没有数据源。
  • @roymustang86 - 清除所有行是我想要的;语法是什么?

标签: c# winforms datagridview


【解决方案1】:

幸运的是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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多