【问题标题】:Returning datas from datatable in vb.net从 vb.net 中的数据表返回数据
【发布时间】:2013-01-25 21:17:27
【问题描述】:

DTName 是一个DataTable,它在下面的代码中返回行......当我通过循环从 0 迭代它到它的计数时。只显示第一行的数据。

如何获取结果中显示的数据表的所有行?

DTName = GetClientNames()

   If Not DTName Is Nothing Then

      For i = 0 to DTName.Rows.count

         strName = DTName.Rows(i).Item("Client Name").Tostring()

      Next i

   End if

【问题讨论】:

  • 这似乎更适合 For Each 循环。
  • 什么是“结果”? strName 是做什么的?
  • 以这种方式在每个循环中覆盖 strName 值...
  • @styxxy :strName 仅显示数据表中列名“clientName”的第一行。
  • 那么您的问题出在@mdn 所说的内容上?

标签: sql vb.net datatable


【解决方案1】:

i的值等于DTName.Rows.count时,For i = 0 to DTName.Rows.count最终会抛出IndexOutOfRangeException错误,限制应该是DTName.Rows.count - 1

要从所有数据行中获取所有值,请将它们存储在 List 中:

    Dim strName As New List(Of String)

    For i = 0 to DTName.Rows.count - 1

       strName.Add(DTName.Rows(i)("Client Name").Tostring())

    Next i

您也可以像这样使用Foreach

    For Each DR As DataRow In DTName.Rows

       strName.Add(DR("Client Name").Tostring())

    Next

我还建议你删除多余的检查 if DTName.Rows.Count > 0

编辑:您可以将strName 声明为string 并将行值附加到它:

    For i = 0 to DTName.Rows.count - 1

        strName &= (DTName.Rows(i)("Client Name").Tostring() & ",")

    Next i

    Response.Write(strName)

【讨论】:

  • 我都试过了,它只返回数据表中的最后一行
  • @balaji 我更新了我的答案以使用列表,这样所有字符串都将添加到 strName 列表中。
  • 这是显示的结果 (System.Collections.Generic.List`1[System.String]
  • 你用什么控件来显示结果?
  • reponse.write在vb.net中显示结果
【解决方案2】:

双重检查列的实际ColumnName

For Each item As DataRow In dataTable.Rows
    strName = item("Client Name").ToString()
    Console.WriteLine(strName)
Next

【讨论】:

  • 您的问题似乎是DataTable 的数据尝试检查您的DataTable。
猜你喜欢
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
相关资源
最近更新 更多