Hallo!
Gibt es eine bewährte Lösung für folgendes Problem?
Ein Treeview soll in meinem Fall eine Art Kategorienliste darstellen.
Einen Datenbankeintrag kann man von einer Liste per Drag & Drop auf einen Node ziehen.
Intern wird dann in einer n:n-Tabelle die ID des Nodes und die ID des
DB-Eintrags aufgenommen. Das funktioniert auch.
Was ist jedoch, wenn ich auf den Root des Nodes klicke und alle untergeordeten Einträge anzeigen lassen will?
Alle rekursiv durchlaufen und in ein SELECT-Statement einbauen würde dieses sehr aufblähen und langsam machen.
Ist in diesem Fall meine Überlegung richtig, bei der Verknüpfung mit einem Node auch automatisch Verknüpfungen mit den übergeordneten Nodes anzulegen.
Beispiel:
http://home.arcor.de/sinnspruch/NodeDemo.jpg
Ich verknüpfe meinen Eintrag mit Node 1.2.1
Intern legt das Programm auch Verknüpfungen mit Node 1.2 und Node 1 an.
Der Nachteil ist: Sobald ich einen Eintrag aus Node 1.2.1 lösche, muss ich auch dafür sorgen, dass aus allen übergeordneten Nodes der Eintrag verschwindet. Das macht die Sache bestimmt fehleranfälliger, oder?
Ich hatte auch schon die Version im Kopf, dass statt einer klassischen ID-Nummer die ganze Kombination, also im Beispiel "#1.2.1" gespeichert wird.
Bei einem Klick auf das Eltern-Node, würde dann nach "#1" gesucht werden, was ja auch automatisch "#1.2.2" finden würde. Ein nachträgliches Verschieben eines Nodes wäre aber so ziemlich unmöglich, da sich ja auch die ID ändern müsste (die möglicherweise ja schon verknüpft ist...)
Also irgendwie komme ich da auf keinen grünen Zweig.
Gibt es da überhaupt ein Patentrezept, das sich in der Praxis bereits bewährt ist?
Würde mich über eure Meinungen freuen
Gruß
Pfoto