Treeview füllen

Grunge

Erfahrenes Mitglied
Hallo Leute,

ich versuche gerade ein Treeview aus einer MYSQL zu füllen, klappt auch ganz gut:

Code:
cats.Nodes.Clear()

        'Root Node finden
        Dim i As Integer
        For i = 0 To ds.Tables("cats").Rows().Count - 1
            If ds.Tables("cats").Rows(i).Item(3) = "root" Then
                Dim root = New TreeNode(ds.Tables("cats").Rows(i).Item(2))
                cats.Nodes.Add(root)

            End If
        Next

        'Childs hinzufügen
        For i = 0 To ds.Tables("cats").Rows().Count - 1
            If ds.Tables("cats").Rows(i).Item(3) <> "root" Then
                cats.Nodes(0).Nodes.Add(New TreeNode(ds.Tables("cats").Rows(i).Item(2)))

            End If
        Next

Was nun mein Problem ist, die Tabelle ist so angelegt:
ID
NAME
PARENT

und dort habe ich nun mehrere Datensätze drin, die quasi den Tree nun vorgeben. Wie ihr oben dem Code entnehmen könnt, sind die Root Nods bei parent mit "root" gekennzeichnet und alle childs durch die ID des Parent unter "PARENT"

wie kann ich das nun automatisiert ausgeben?! Am besten wäre ja, die Datenbank komplett durchzugehen und dann jedem PARENT durch ne ABfrage das entsprechende CHILD zuzuordnen.

Hoffe auf abhilfe ;)

DANKE
 
Hallo Grunge,

bei der aktuellen Situation müsstest du die "Liste" der Nodes immer wieder durchgehen.
Erst holst du dir alle die als Parent root haben. Am besten removest du diese dann aus der Liste. Und dann immer wieder das selbe --> Liste durchgehen und den Parents zuordnen. Dann wieder mit der nächsten Stufe usw... Das ist ziemlich unschön.
Besser wäre es wenn du statt die Parents zu speichern, den Parents sagst wer ihre Childs sind, z.B. durch einen String der kommasepariert die IDs der Child hat --> 12,13,16,18...

Anschließend durchläufst du die Roots dann und rufst für jeden eine rekursive Methode "HoleKinder" auf. Die arbeitet sich dann bis zum letzten Kind durch. Wichtig dabei ist das du am Anfang der Methode das Objekt erstellst. In der dann folgenden Schleife werden die Kinder erstellt. Nach der Schleife weißt du die Kinder dem Parentobjekt einfach noch zu. Dann ist die Methode zuende und springt wieder in den Aufruf des Parents zurück. Dieser weist sich mit seinen Kindern dann seinem Parent zu usw.

Ganz einfach oder?

Gruß
Mirar
 
Zurück