Hallo Cathi
das einfachste wird wohl sein, wenn du die Daten zuerst zu einer
DataTable vereinst (
DataTable.Merge) und dann entsprechend der 1. Spalte (DataId) sortierst, so daß sie dann (beispielhaft) in folgender Reihenfolge vorliegen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| 1.1 1.1.1 1.2 1.2.1 1.2.1.1 1.2.2 1.2.2.1 1.2.3 1.2.3.1 1.3 1.3.1 1.3.2 |
Nun kannst du einfach von oben nach unten den Baum aufbauen. Du mußt dir dann nur je Level den Parent-TreeNode merken (z.B. in einer
List<TreeNode>).
Wenn der Level größer als der vorherige Level ist, dann einen Untereintrag erzeugen, ansonsten bei gleichem Level einen neuen Nachbarknoten erzeugen.
Nur wenn der Level kleiner als der aktuelle ist, mußt du die Parent-Liste durchsuchen und den passenden
TreeNode finden, an dem der neue Knoten eingefügt werden soll.
Die Parent-Liste mußt du nach jeder Aktion dann aktualisieren.
Wenn du viel Zeit zum Lesen hast, kann ich dir auch noch folgenden Artikel (aus dem myCSharp-Forum) empfehlen:
[Tutorial] Bäume durchlaufen mit Rekursion (und Alternativen)