/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hierakisk, niveauinddelt menu
Fra : Kasper Katzmann


Dato : 17-11-03 07:21

Jeg spurgte tidligere hvordan man laver en hierakisk liste ud fra en tabel
a'la det her:

Forsiden
Om firmaet
Ledige stillinger
Kurser
Webkurser
ASP
ASP og databaser
HTML
CSS
Officekurser
Word
PowerPoint


Jeg fik så dette geniale svar fra Morten R. Rasmussen.

sub vismenu(nuvParent)
for i=lbound(rsArray,2) to ubound(rsArray,2)
if rsArray(1,i)=nuvParent then
Response.Write rsArray(2,i)
vismenu rsArray(0,i)
end if
next
end sub

Set rs=Conn.Execute("SELECT PK_PageID, PK_ParentID, Title FROM tabellen")
if not rs.EOF then
rsArray=rs.GetRows()
vismenu(0)
end if

Det virker fortrinligt, men.... Hvordan indsætter jeg det rigtige antal
" " før hver linie, så man får de rigtige indrykninger efter hvilket
niveau man befinder sig på.


--
Mvh
Kasper Katzmann
Katzmann Consulting
http://www.katzmann.dk



 
 
Jakob Andersen (18-11-2003)
Kommentar
Fra : Jakob Andersen


Dato : 18-11-03 02:03

In article <bp9pb4$46g$1@sunsite.dk>, Kasper Katzmann wrote:
> Jeg fik så dette geniale svar fra Morten R. Rasmussen.
>
> sub vismenu(nuvParent)
> for i=lbound(rsArray,2) to ubound(rsArray,2)
> if rsArray(1,i)=nuvParent then
> Response.Write rsArray(2,i)
> vismenu rsArray(0,i)
> end if
> next
> end sub
>
> Set rs=Conn.Execute("SELECT PK_PageID, PK_ParentID, Title FROM tabellen")
> if not rs.EOF then
> rsArray=rs.GetRows()
> vismenu(0)
> end if
>
> Det virker fortrinligt, men.... Hvordan indsætter jeg det rigtige antal
> "&nbsp;" før hver linie, så man får de rigtige indrykninger efter hvilket
> niveau man befinder sig på.

I din vismenu rutine kan du evt. have en parameter kaldet niveau som
du så tæller en op hver gang den kaldes på ny.

Dog skal du være opmærksom på at du med ovenstående løsning belaster
databasen mest i forespørgselssituationen hvilket jeg vil gætte på er
den operation der forekommer oftest. Der findes metoder hvorpå man kan
lave minimal belastning uden rekursivitet ved forespørgsel, dog bliver
opdateringer så lidt sværere at have med at gøre.

--
Jakob Andersen

Kasper Katzmann (18-11-2003)
Kommentar
Fra : Kasper Katzmann


Dato : 18-11-03 23:04

Jakob Andersen skrev:
> In article <bp9pb4$46g$1@sunsite.dk>, Kasper Katzmann wrote:
>> Jeg fik så dette geniale svar fra Morten R. Rasmussen.
>>
>> sub vismenu(nuvParent)
>> for i=lbound(rsArray,2) to ubound(rsArray,2)
>> if rsArray(1,i)=nuvParent then
>> Response.Write rsArray(2,i)
>> vismenu rsArray(0,i)
>> end if
>> next
>> end sub
>>
>> Set rs=Conn.Execute("SELECT PK_PageID, PK_ParentID, Title FROM
>> tabellen") if not rs.EOF then
>> rsArray=rs.GetRows()
>> vismenu(0)
>> end if
>>
>> Det virker fortrinligt, men.... Hvordan indsætter jeg det rigtige
>> antal "&nbsp;" før hver linie, så man får de rigtige indrykninger
>> efter hvilket niveau man befinder sig på.
>
> I din vismenu rutine kan du evt. have en parameter kaldet niveau som
> du så tæller en op hver gang den kaldes på ny.

Joh, men hvordan får jeg den til at nulstille eller gå et niveau ind?

> Dog skal du være opmærksom på at du med ovenstående løsning belaster
> databasen mest i forespørgselssituationen hvilket jeg vil gætte på er
> den operation der forekommer oftest.

Er der noget jeg fuldstændigt har misforstået her? Laver jeg ikke kun ét
kald til database fordi jeg kommer det hele i et array?

rsArray = rs.GetRows()


--
Mvh
Kasper Katzmann
Katzmann Consulting
http://www.katzmann.dk



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste