Reputation: 1157
Can someone please tell me what I'm doing wrong....
I am trying to populate an ObjectListView control by looping through a dataset (I don't want to bind it to my dataset). The first row populates but nothing after that.
My code looks like so:
If dsOverdueCalls.Tables.Count > 0 And dsOverdueCalls.Tables(0).Rows.Count > 0 Then
For x = 0 To (dsOverdueCalls.Tables(0).Rows.Count - 1)
'Calculate overdue amount
.....
Dim lstCalls = New List(Of [Call_Details])() From {New [Call_Details]() With {.Id = tempDT.Rows(x)("id").ToString, .Summary = tempDT.Rows(x)("summary").ToString, .First_Name = tempDT.Rows(x)("first_name").ToString, .Due_At = OverdueStr}}
lsvOverdueCalls.SetObjects(lstCalls)
Next
End If
I get no errors but only the first record will populate in my control. Thanks
Upvotes: 1
Views: 655
Reputation: 9981
You're resetting the ObjectListView
in each iteration. So, what you believe is the "first" row is actually the last row. The following code will fix your issue.
If ((dsOverdueCalls.Tables.Count > 0) AndAlso (dsOverdueCalls.Tables(0).Rows.Count > 0)) Then
Dim lstCalls = New List(Of [Call_Details])
For x As Integer = 0 To (dsOverdueCalls.Tables(0).Rows.Count - 1)
lstCalls.Add(New [Call_Details]() With {.Id = tempDT.Rows(x)("id").ToString, .Summary = tempDT.Rows(x)("summary").ToString, .First_Name = tempDT.Rows(x)("first_name").ToString, .Due_At = OverdueStr})
Next
lsvOverdueCalls.SetObjects(lstCalls)
End If
Upvotes: 1