1

我正在开发一个程序,不知道如何解决我现在遇到的这个问题。

当我运行此代码时:

int maxRows = AfdelingDT.Rows.Count;
maxRows -= 1;
for(int i = 0;i <= maxRows; i++)
{
   if (Convert.ToInt16(AfdelingDT.Rows[i][0]) == Convert.ToInt16(removeRowTB.Text))
   {
      AfdelingDT.Rows.RemoveAt(i);
   }
}

如果我尝试删除DataTable.

如果我运行表格最后一行的代码,我完全没有问题。

4

1 回答 1

1

问题是,当您在循环中删除一行时,它会重新编号该点之后的所有行,从而导致损坏。

将代码更改为从结尾循环到开头:

int maxRows = AfdelingDT.Rows.Count;
maxRows -= 1;
for(int i = maxRows;i >= 0; i--)
{
   if (Convert.ToInt16(AfdelingDT.Rows[i][0]) == Convert.ToInt16(removeRowTB.Text))
   {
      AfdelingDT.Rows.RemoveAt(i);
   }
}
于 2013-04-10T17:40:47.993 回答