2010-04-02 30 views
0

我正在遍历表格行。如果行的行是空的,我只想删除行。 它显示一个错误我无法从循环中移除表格中的一行

Public Sub RemoveBlankRow(ByVal MyDataTable As DataTable) 
     Try 
      Dim MyRowStr As String = String.Empty 
      For Each MyRow As DataRow In MyDataTable.Rows 
       MyRowStr = "" 
       For Each MyCellText As Object In MyRow.ItemArray 
        MyRowStr = MyRowStr + MyCellText.ToString 
       Next 
       MyRowStr = Replace(MyRowStr, "0", " ") 
       MyRowStr = Replace(MyRowStr, ".", " ") 
       If MyRowStr.Trim = String.Empty Then 
        MyDataTable.Rows.Remove(MyRow) 
       End If 
      Next 
     Catch ex As Exception 

     End Try 
    End Sub 

如何克服这个问题?

+0

只是说明:string.Empty与null不同。 – 2010-04-02 10:08:28

回答

0

创建您的MyDataTable.Rows的副本,迭代并从原始集合中删除行。

1

一般而言,当您迭代它时,您不能修改集合的结构。

一个简单的解决方案是在迭代您的表时,将需要删除的行存储在单独的删除列表中。完成迭代后,遍历删除列表并从原始列表中删除它们。