Heirarkisk menu
Jeg forsøger at lave en dhtml dropdown menu, med et uendeligt antal underpunkter:home
menu1
menu11
menu12
menu2
menu21
menu211
menu212
menu3
Menupunkterne har jeg lavet i en MySQL-database med følgende indeksering:
0:ID(int) - recordens ID
1:ParentID(int) - Hvad er menupunktets placering
2:Name(char) - Menupunktets navn
3:Sort(int) - Sortering af menupunkterne på denne gren
Jeg har lavet nedenstående kode, der henter en funktion, hver gang der kommer en \"child\" til et punkt. Denne henter også sig selv i tilfælde af et underpunkt til et underpunkt.
Det virker dog ikke, da funktionen aldrig vender tilbage til sig selv, men springer ud i hovedprogrammet, og derfor ikke afslutter en gren.
Jeg håber der er nogen der kan hjælpe, også hvis der er en nemmere måde.
På forhånd tak
SQL = \"SELECT * FROM treeview ORDER BY ParentID ASC, Sort ASC\"
<%
homeID = avarFields(0,0)
MenuNr = 0
For P1 = 1 to Ubound(avarFields, 2)
If avarFields(1,P1) = homeID Then
MenuNr = MenuNr +1
intCount = arrayCount(P1+1)
If intCount = \"\" Then intCount = 0
endTag = \"\"
If MenuNr = 1 Then endTag = \",20,150\"
Response.Write(\"Menu\"&MenuNr&\"=new Array(\"&Chr(34)&avarFields(2,P1)&Chr(34)&\",\"&Chr(34)&\"#\"&Chr(34)&\",\"&intCount & endTag&\");\"&chr(10)&chr(13))
strMenuNr = \"\" & MenuNr
If arrayCount(P1) <> \"\" Then
Response.Write(Child(avarFields(0,P1),strMenuNr))
End If
End If
Next
%>
<%
Private Function Child(ParentID,strMenuNr)
Dim ChildMenuNr, intCount, strTempMenuNr, ChildMenu, endTag, ChildTemp
ChildMenuNr = 0
ChildTemp = \"\"
For P2 = 1 to Ubound(avarFields, 2)
If avarFields(1,P2) = ParentID Then
intCount = arrayCount(P2+1)
If intCount = \"\" Then intCount = 0
ChildMenuNr = ChildMenuNr +1
strTempMenuNr = strMenuNr&\"_\"&ChildMenuNr
endTag = \"\"
If ChildMenuNr = 1 Then endTag = \",20,150\"
ChildTemp = ChildTemp + (\"Menu\"&strTempMenuNr&\"=new Array(\"&Chr(34)&avarFields(2,P2)&Chr(34)&\",\"&Chr(34)&\"#\"&Chr(34)&\",\"&intCount & endTag&\");\"&chr(10)&chr(13))
If arrayCount(P2+1) <> \"\" Then
ChildTemp = ChildTemp + Child(avarFields(0,P2),strTempMenuNr)
End If
End If
Next
Child = ChildTemp
End Function
%>