Laden...

Parent/Child Elemente darstellen

Erstellt von Druid vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.657 Views
D
Druid Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren
Parent/Child Elemente darstellen

Also folgendes:

Ich habe eine Tabelle:

id (weitere felder) parentid

1
2 3
3 1

Also das feld partentid linkt auf die eigentliche id. So ist es möglich verschachtelungen darzustellen. Alles schön und gut.

Doch wie selecte ich ein solches system nun?
Ich würde das dann gerne in einem Treeview darstellen oder ähnlichem.

432 Beiträge seit 2005
vor 18 Jahren

hallo druid,

gehts auch ein bissi ausführlicher in der fragestellung???

wenn ich es richtig verstanden habe, willst du innerhalb der tabelle auf andere einträge der gleichen tabelle verweisen (selbstreferenz), richtig?

wenn du es in einer treeview darstellen willst, suchst du in dem zusammenhang hier im forum am besten auch mal nach rekursion. ich glaube von herbivore gibt´s hier auch schon mindestens einen artikel zum thema treeview knoten rekursiv aufbauen.

in deinem fall müsste die rekursion :1.auf oberster ebene alle knoten bauen aus einträgen, deren feld parentid NULL ist 1.auf der ersten unterebene alle knoten aus tabelleneinträgen erstellen, die mit ihrer parentid auf einträge der knoten oberster ebene verweisen 1.auf der zweiten ebene alle einträge abarbeiten, die mit ihrer parentid auf einträge der knoten der ersten ebene verweisen

  1. usw.

ich glaube, ich würde es so machen, dass der abfragestring innerhalb der rekursion zusammengebaut wird und sinngemäß dabei eine sql anweisung der art
select [alle nötigen eintragsfelder]
from [meineTabelle]
where (
ParentID in ([ID´s der Ebene, die über dem aktuellen Rekursionslauf liegt])
)

Bei vielen Datensätzen wird Rekursion aber schnell zum Flaschenhals, dann würde ich zusätzlich ausweichen auf * BackgroundWorker beim Einlesen

  • Speichern des Ranges eines Eintrags in der Datenbank in einem zusätzlichen Feld der Tabelle. Dann wird die Rekursionsprogrammierung auch einfacher:
    select [alle nötigen eintragsfelder]
    from [meineTabelle]
    where (
    Rang = [Nummer des aktuellen Rekursionslaufs]
    )

viel erfolg!

gruß
ron