Hallo!

> > Wenn ich so einen Baum mit Java-Script auf- und zuklappen
> > will, gebe ich grunds�tzlich den ganzen Baum in HTML aus und
> > klapp ihn dann anschlie�end mit JavaScript am Client
> > zusammen. Dann funktioniert der Baum auch bei abgeschaltetem
> > JavaScript (nat�rlich ohne auf- und zuklappen). In dem Fall
> > lese ich den kompletten Baum sortiert nach "absoluter
> > Position" (berechnet aus der relativen Position des Parent
> > und des aktuellen Datensatzes, z.B. mit einem Trigger).
>
> Trigger? Sehr geschickt! Es ist bloss u.U sehr aufwendig, denn man
muss
> u.U. alle anderen Knoten neu berechnen.... Aber wenn Knoten nicht oft
> eingef�gt werden nicht weiter schlimm...

Ja, aber ein Men� wird ja wesentlich �fter gelesen als modifiziert und
deshalb muss das Lesen und nicht das Modifizieren sehr schnell sein. Und
ein Menu hat ja auch immer eine �berschaubare Gr��e.

Ein hierarchisches Messageboard kann im Gegensatz zu einem Men� sehr
gro� werden, daf�r werden die Knoten aber auch nicht hin und her
geschoben, so dass hier in der Regel kein Trigger sondern nur eine
einfache Berechnung beim INSERT ben�tigt wird.

> > > Hat man mehrere B�ume in der DB, hat man zus�tzlich eine TreeID.
> >
> > ... oder ein Kennzeichen f�r "RootID" - z. B. Parent-ID =
> > NULL. Ich w�rde keine zus�tzliche Spalte f�r eine TreeID
> > definieren. Alle Knoten mit Parent-ID = 0 sind Wurzelknoten.
>
> TreeIDs w�rde ich deshalb definieren, damit ich mir ohne irgendwelche
> komplexen rekursiven Cursor-Geschichten in SPs mit einer Anfrage alle
> Knoten eines Baumes bekomme....
>
> Select * from knoten where treeID=4711
>
> ... Um sie dann wie besprochen clientseitig mit rs.Filter zu
> durchlaufen...

Das kann ich ebenfalls in die "absolute Position" packen, indem ich die
Wurzelknoten in der absoluten Position aufnehme und dann direkt mit
"BETWEEN" oder "LIKE '...%'" filtere. Ich hab doch schon zus�tzlich die
absolute Position. ;-)

Wenn man ein Men� auf z. B. 4 Ebenen begrenzt, kann man ein
hierarchisches Recordset erzeugen ...

SHAPE     {SELECT ... FROM menus WHERE pid is NULL ORDER BY rps} AS L0
APPEND ((({SELECT ... FROM menus WHERE pid = ? ORDER BY rpd} AS L1
           RELATE L0.id TO PARAMETER 0) AS L1)
APPEND   ({SELECT ... FROM menus WHERE pid = ? ORDER by rps} AS L2
           RELATE L1.id TO PARAMETER 0) AS L2)
APPEND   ({SELECT ... FROM menus WHERE pid = ? ORDER BY rps} AS L3
           RELATE L2.id TO PARAMETER 0) AS L3)

... und dieses entweder sequentiell abarbeiten oder direkt als XML-Datei
speichern. In der Web-Applikation wird das Men� dann aus der XML-Datei
generiert.

Freundliche Gr��e
Joachim van de Bruck



| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an