为什么不添加到列表中

时间:2013-12-11 08:05:47

标签: .net vb.net generic-list

此问题基于此Link

我还没有找到答案,但我正在尝试解决方案并导致另一个问题..

Public Class markerRow
  Public MarkerName As String
  Public CameraID As Integer
  Public HostAddress As String
End Class

Public mr As New markerRow
Dim aList As New List(Of markerRow)

For Each dtrow In markerDtable.Rows
        mr.MarkerName = dtrow("MarkerName")
        mr.CameraID = dtrow("CameraID")
        mr.HostAddress = dtrow("HostAddress")
        aList.Add(New markerRow())
Next

从我的想法来看,这段代码应该将数据库中的每个数据添加到列表中的相应变量中。但我仍然不知道它到底是做什么的。

我检查了aList.Count.ToString,它给了我5个项目,这是真的,因为我的数据库中有5行..

For Each elem In aList
        listbox.Items.Add(mr.MarkerName)
        listbox.Items.Add(mr.CameraID)
    Next

检查aList中的哪些项目,我做到了......不幸的是......它只给了我最后一项,5次。标记名列和摄像机ID列的最后一项。

enter image description here

我错过了什么?或者我的代码有什么问题?
aList应该具有上面数据库中的内容。不仅是最后一项。

1 个答案:

答案 0 :(得分:1)

Public mr As New markerRow
Dim aList As New List(Of markerRow)

For Each dtrow In markerDtable.Rows
        mr.MarkerName = dtrow("MarkerName")
        mr.CameraID = dtrow("CameraID")
        mr.HostAddress = dtrow("HostAddress")
        aList.Add(New markerRow())
Next

在这里,您要为markerRow中的每一行创建名为mr一个 DataTable,并更新。此外,对于每一行,您都要创建另一个 markerRow,并将新的一个添加到aList

For Each elem In aList
    listbox.Items.Add(mr.MarkerName)
    listbox.Items.Add(mr.CameraID)
Next

然后,对于aList中的每个元素,您将{em>两个项添加到ListBox,每次MarkerNameCameraID来自mr {1}},而不是aList元素的数据。


你可能正在寻找类似的东西:

Dim aList As New List(Of markerRow)

For Each dtrow In markerDtable.Rows 
    Dim mr = New markerRow() ' create a new markerRow for every row '
    mr.MarkerName = dtrow("MarkerName")
    mr.CameraID = dtrow("CameraID")
    mr.HostAddress = dtrow("HostAddress")
    aList.Add(mr)            ' add the new markerRow to the list '
Next

For Each elem In aList
    listbox.Items.Add(elem.MarkerName)
Next