почему не добавляется в список

этот вопрос основан на этой 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 раз. последний элемент в столбце MarkerName и столбце идентификатора камеры.

введите здесь описание изображения

Что мне не хватает? или что не так в моем коде?
в aList должно быть то же, что и в БД выше. не только последний пункт.


person AdorableVB    schedule 11.12.2013    source источник


Ответы (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 вы добавляете два элемента в ListBox, и каждый раз это MarkerName и CameraID из mr, а не данные из элементов 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
person sloth    schedule 11.12.2013
comment
здорово! Спасибо! Сейчас я действительно работаю головой из-за моей проблемы по предыдущей ссылке. :) - person AdorableVB; 11.12.2013