C# 从datagridview中删除所有数据
为什么这样不行C# 从datagridview中删除所有数据,c#,winforms,datagridview,C#,Winforms,Datagridview,为什么这样不行 //:::::::::::::::::::::::::::::::::::: private void uxClearButton_Click(object sender, EventArgs e) { clearDGV(); } void clearDGV() { // remove selected rows foreach (DataGridViewRow row in uxD
//::::::::::::::::::::::::::::::::::::
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,未提交的新行无法删除。
编辑
好的-感谢Steve等人鼓励我自己找到答案
uxChargeBackDataGridView.Rows.Clear();
幸运的是,
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);
}
int rowCount=dataGridView1.Rows.Count;
对于(int n=0;n
无法使用foreach在集合上循环的可能重复项,并在循环内从同一集合中删除项尝试向后迭代这些项,并在执行过程中删除每个项。对于(int x=uxDGV.Rows.Count;x>0;x--)@SeanBright…该问题看起来与绑定的datagridview有关;我的没有数据源。@roymustang86-清除所有行是我想要的;语法是什么?