循环遍历asp.net数据表中的行时没有数据

时间:2011-10-18 15:24:18

标签: asp.net vb.net datatable

当我的应用程序遍历下面的第一个代码块时,我会获得所有datarow字段的有效数据。

    For Each dRow In dtExportAddr.Rows
        dtExportAddr.Rows.Add(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
    Next  

但循环浏览代码块时出现错误“修改了集合;枚举操作可能无法执行。”

所以我使用下面的代码块:

        Dim rowCount As Integer = dtExportAddr.Rows.Count
        Dim index As Integer = 0
        For index = 0 To rowCount - 1
            Dim dRow As DataRow = dtExportAddr.Rows.Item(index)
            dtExportAddr.Rows.Add(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
        Next

但是,在第二个代码块中,我获得了MgrID的有效记录,但是我得到了其他字段的空白值。
当我查看数据库时,该表中的所有字段都具有有效值。

导致空白值的原因是什么?

3 个答案:

答案 0 :(得分:1)

不确定你想要获得什么,因为你从dtExportAddr中选择了数量并将记录添加回来

试试这个 - 未经测试

Dim dRow As DataRow = dtExportAddr.Rows(index)

答案 1 :(得分:1)

您仍在向第一个代码块中的相同数据表添加行,您只是以不同的方式枚举它。您应该创建一个新的数据表来添加行,而不是您要循环的行。

如果你这样做,你应该可以使用任何一种方法进行循环。

    Dim tempTable As New DataTable

    For Each dRow As DataRow In dtExportAddr.Rows
        Dim tempRow As DataRow = tempTable.NewRow(dRow("MgrID"), dRow("LocationNum"), dRow("DeptNum"), dRow("AddressLinkID"), dRow("PositionID"))
        tempTable.Rows.Add(tempRow)
    Next

我不确定这会让你更接近你的目标,但是当你循环浏览数据表时,我确实无法弄清楚你想要完成什么。

答案 2 :(得分:1)

您的空白值可能是因为列名与您输入的名称略有不同而导致的?

我对你正在做的事情有点困惑,因为你似乎基本上复制了这些行?我真的不确定这与将它们写成excel文件有什么关系