Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations wOOdy-Soft on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Populating a listview from an array

Status
Not open for further replies.

Pinan

IS-IT--Management
Jul 15, 2002
40
US
Alright, I am working with a listview, and it works fine. But it only displays the first 2 lines of info from the array (which is getting its info from a db table. so it could have 1 line of info, or a hundred. Maybe even more). So I know its gotta go to a loop, but there are some problems in doing that. Here is the code that displays the first 2 lines of code.


Dim listitem1 As ListItem
Set listitem1 = ListView1.ListItems.Add()
listitem1.Text = EDWInfo.Fields(0)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(1)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(2)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(3)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(4)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(5)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(6)
ListView1.ListItems(1).ListSubItems.Add , , EDWInfo.Fields(7)
EDWInfo.MoveNext
Dim listitem2 As ListItem
Set listitem2 = ListView1.ListItems.Add()
listitem2.Text = EDWInfo.Fields(0)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(1)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(2)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(3)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(4)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(5)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(6)
ListView1.ListItems(2).ListSubItems.Add , , EDWInfo.Fields(7)

The problems are setting the loop to continually dim a different variable as a listitem, and then making the listitem(x) change with each loop. any ideas on this?
 
Try something like:
Dim x as integer
x = 1
EDWInfo.movefirst
While Not EDWInfo.EOF
Dim listitem(x) as listitem
Set listitem(x) = ListView1.ListItems.Add()
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(1)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(2)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(3)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(4)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(5)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(6)
ListView1.ListItems(x).ListSubItems.Add , , EDWInfo.Fields(7)
x = x + 1
EDWInfo.MoveNext
Wend

Haven't tried it yet but might help. ----------------
Joe
 
Here's how I do this sort of thing.

Code:
Dim itmEDWInfo As ListItem
Dim K As Integer
With EDWInfo
    Do Until .EOF
        Set itmEDWInfo = ListView1.ListItems.Add(, , .Fields(0))
        For K = 1 To 7
            itmEDWInfo.SubItems(K) = .Fields(K)
        Next
        .MoveNext
    Loop
End With

You don't have to leave every ListItem intact. You can reuse the ListItem object for each item in the list.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top