Toon posts:

[ASP] Links database (à la treeview)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig aan een website en er moet ook een soort van linkspagina op komen.
Gewoon een simpel paginaatje dat even de database leest en gewoon alle links uitspuwt vind ik natuurlijk veel te simpel 8). Ik wil dus een treestructuur maken en die dan uitlezen vanuit mijn database met asp en weergeven op de pagina.
Database ziet er ongeveer zo uit:
Link_ID autonumber (uniek)
Parent id van parent
URL
Naam
...

Mijn code zou een lege url moeten aanzien als een categorie, dat even terzijde.
Een link kan dus bij een categorie horen of bij een andere link en die dan weer bij een andere categorie enzovoort.
Oneindig veel niveau's mogelijk...

De site opzich zal geen duizenden niveau's nodig hebben maar ik wil dit gewoon even maken zodat ik het later nog kan gebruiken :)

Ik zag het allemaal al mooi voor mij: mijn asp leest even de database uit, print de nodes met parent 0 gaat dan naar niveau 2, niveau 3...
Na even rekenen had ik door dat het aantal queries exponentieel begint toe te nemen per niveau, wat de snelheid van mijn site en server zeker niet opdrijft 8)7

Ik wil ertoe komen dat de pagina de hele tree ineens weergeeft (omdat die meestal toch maar een 3-tal niveau's diep is).

Hoe begin ik hier nu aan? Ik heb al enkele tree-applicaties bekeken en die laden allemaal pas een node als je erop klikt (en ik wil mijn pagina niet herladen).

Hebben jullie een hint of een stuke pseudocode om met zo weinig queries mijn hele tree weer te geven.

Ik wou het zo doen maar dan crasht mijn server gegarandeerd 8)7 :
Selecteer met parent 0
While not EOF
write node
select met parent deze node
while ...
...
...
...

hopeloosdus op deze manier :(

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 18-05 15:53

Jaspertje

Max & Milo.. lief

Zoals ik het heb, gebruik ik geen database, maar een XML bestand (niet omdat ik wil dat het een database is, maar omdat ik de structuur dan makkelijk kan zien... verder heb ik een javascript tree helemaal omgebouwd en de hele javascript (het gedeelte wat de tree zou moeten laden) in ASP geschreven).

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<XML>
 <TREE>
  <TREE>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
  </TREE>
  <TREE>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
   <ITEM name="" url=""/>
  </TREE>
  <ITEM name="" url=""/>
  <ITEM name="" url=""/>
  <ITEM name="" url=""/>
  <ITEM name="" url=""/>
 </TREE>
</XML>


Ik heb de javascript tree van SoftComplex gebruikt (de gratis versie) http://www.softcomplex.com/
En het gedeelte waar zij de tree opbouwen (var TREE_ITEMS) helemaal in ASP gezet

[ Voor 37% gewijzigd door Jaspertje op 21-01-2004 15:46 ]


Verwijderd

Die manier die jij wilt doen kan wel, en je server zal niet crashen lijkt me. Een goede oplossing is het niet echt nee, aangezien je veel query's nodig hebt voor een simpele treeview. Je kunt alles in een array stoppen en die vervolgens doorlopen, maar een mooiere manier is omschreven op Storing Hierarchical Data in a Database. Diezelfde methode staat ook op http://groups.google.com/...posting.google.com&rnum=3. Dat werkt een stuk efficiënter. :)

[ Voor 6% gewijzigd door Verwijderd op 21-01-2004 15:48 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 26-05 23:39

mulder

ik spuug op het trottoir

- open de volledige tabel
- maak een functie GetChildren(parentid)
- In die functie kun je Recordset.Filter = "ParentID = " & parentid doen
- De functie kan zichzelf weer aanroepen met z'n eigen id en dus de children tonen

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Bedankt :)
Ik denk dat ik voor Recordset.Filter ga, het is zeker niet de mooiste oplossing maar aangezien ik toch onder de 5 niveau's blijf, zal het aantal query's zeker te doen blijven en is het makkelijk om updates uit te voeren of nieuwe records toe te voegen zonder berekeningen te maken.
Als het af is laat ik wel iets weten.