Ga naar inhoud

Treeview -> hierarchische data weergeven


Aanbevolen berichten

Hallo allemaal, na een uur gesurfd en gezocht te hebben te hebben liep ik tegen een aantal probleempjes op, het gaat om het volgende. Ik heb een SQL server 2000 database, maar deze heeft de vorm van een boomstructuur. Als script-language gebruik ik php. Nu is het de bedoeliong om de data d.m.v. een treeview weer te geven (net zoals je verkenner met die kruisjes). Het is de bedoeling dat als er op een kruisje geklikt wordt er een stored procedure van de database uitgevoerd wordt om de volgende items als child weer te laten geven van de parent. Nu is het echter niet de bedoeling om de hele database in te laden in het menu, alleen de info waarom gevraagd wordt uiteraard. en is het ook niet de bedoeling dat na elke klik op het kruisje de pagina gerefresht wordt. Ik ben bang dat ik dan tegen een java applet ga aanlopen, maar dan moet ik weer via jdbc kopplingen werken (nu odbc) Iemand ideeen / voorbeelden voor dit probleem??? alvast bedankt, GreetzZzz
Link naar reactie
Dat wordt een stukje recursief programmeren. Ik weet niet precies waar het over gaat, maar ik ga er gemakshalve van uit dat je over rubrieken praat (wat daar dan ook in zit). Die rubrieken kunnen subrubrieken hebben. Elke rubriek heeft een ID, een naam en de ID van de rubriek waar hij in zit (dat noem ik de parent-rubriek). De rubriek op het hoogste niveau heeft als parent ID 0. Deze bestaat niet echt, maar is dus om aan te geven dat 't de bovenste rubriek is. Ook als je meerdere rubrieken op het hoogste niveau hebt, dan is het handig om nog een niveau erboven bij te maken. Programmeert wat makkelijker. Als je 'm niet nodig hebt laat je 'm gewoon niet zien ("als rubriekID <> x dan zet 'm op het scherm en anders niet") Meer hoef je niet in de database te hebben. Je zoekt de rubriek met als parent ID 0 (de bovenste): "SELECT * FROM rubrieken WHERE parentID = 0" Je zet 'm op het scherm. Vervolgens ga je alle rubrieken zoeken met als parentID de rubriek die je net had. Als je er eentje gevonden hebt, dan kijk je eerst of er nog child-rubrieken zijn (dus een niveau onder de huidige rubriek). Zo ja, dan krijg je het rondje nog een keer, totdat er geen child-rubrieken meer zijn. Op deze manier kun je de hele tabel doorlopen. Nu zit je nog met de weergave. Je kunt een extra record "niveau" in je tabel zetten. De bovenste rubriek heeft niveau 0, daaronder 1, 2, enz. Afhankelijk van het niveau zet je bijvoorbeeld een aantal spaties of streepjes voor de rubrieknaam. Nu het programmeren nog: ik heb geen voorbeeld bij de hand (en zeker niet in php, ben ik niet bekend mee), maar dat gaat ongeveer als volgt: [code:1:d0220969af] Hoofdfunctie { SELECT * FROM Rubrieken WHERE ParentID = 0 ZetOpScherm(rubrieknaam) ZoekSubrubriek(parentID) } ZoekSubrubriek(parent) { SELECT * FROM Rubrieken WHERE ParentID = parent Zolang rubriek gevonden { ZetOpScherm(rubrieknaam) ZoekSubrubriek(parentID) Ga naar volgende rubriek } } ZetOpScherm(rubrieknaam) { // functie voor de weergave } [/code:1:d0220969af] Jouw probleem is nog wat ingewikkelder, maar als je dit werkend krijgt ben je al een heel eind.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...