22. september 2003 - 14:22
Der er
5 kommentarer og
1 løsning
Undermenu problem igen
Jeg har en javascript menu som jeg gerne vil danne vha. asp, men jeg ved ikke lige hvordan jeg skal gøre det. Her er min db struktur:
id
navn (tekst)
hovedmenu (1=ja 0=nej)
subid (0=nej ellers lig med id)
F.eks.
Medlemmer (id=1 subid=0)
- Opret (id=2 subid=1)
- Vis (id=3 subid=1)
Organisation (id=4 subid=0)
- Rediger (id=5 subid=4)
- Vis (id=6 subid=4)
Det skulle være rigelig forklaring!?! Er der nogen der har nogen ideer til at lave dette. Jeg kan sagtens lave det så den først hiver undermenuerne ud når man trykker på topmenupunktet, men jeg vil hive det hele ud på een gang så jeg kan lave navigeringen client-side!
Nogen der kan hjælpe?
22. september 2003 - 14:36
#2
Desværre skal den tilpasses lidt mere til mit behov. Jeg burde måske have vist dig min javascript-kode:
<script language="JavaScript" src="../jscript/menu.js"></script>
<script language="JavaScript">
function buildNavigation()
{
NyKat("5", "Næste release", false, "../release/release.asp");
NyKatLink("5", "Tidligere releases", "../release/list.asp?mode=pre");
NyKatLink("5", "Kommende releases", "../release/list.asp?mode=for");
}
buildNavigation();
document.write(strNav);
</script>
Problemet er, at de SKAL hives ud eller arrangeres i den rigtige rækkefølge. Kan du ændre den menu på dit link så den passer til min?
03. oktober 2003 - 15:08
#6
Hej mrjowns,
Jeg har lavet en løsning som måske er lidt langhåret, men den er kanon hurtig, og kræver kun et opslag i DB.
1) lave en select fx:
SELECT a.id,a.name,a.parentid,a.pos, count(b.id) as antal
FROM menu a LEFT JOIN menu b on a.id = b.parentid
GROUP by a.id,a.name,a.parentid,a.pos
ORDER BY a.parentid,a.pos
nu har du et recordset der er nogenlunde ordnet, men du vil gerne have dem i den rækkefølge de skal vises
2) smid dem over i et array og lav en sortering fx:
orderArray = rsMenuRows.GetRows
intSize = Ubound(orderArray,2)
redim resultArray(intSize)
intCounter = 0
call OrderTest(0)
call WriteList()
sub OrderTest(parent)
dim i
for i = 0 to UBound(orderArray,2)
'er det et child til den parent vi er ved nu?
if orderArray (2,i) = parent then
resultArray(intCounter) = i
intCounter = intCounter + 1
call OrderTest(orderArray (0,i))
end if
next
end sub
læg mærke til at OrderTest er en rekursiv sub, så den bliver ved med at kalde sig selv til du er nået igennem arrayet og du har den rigtige rækkefølge i resultArray.
3) Du skal nu have skrevet dem ud derfor kalder du sub writeList()
sub WriteList()
for i = 1 to UBound(resultArray)
if orderArray (2,resultArray(i)) = 0 then
response.write "NyKat('" & orderArray (0,resultArray(i)) & "','" & orderArray (1,resultArray(i)) & "',false,'url');"
else
response.write "NyKatLink('" & orderArray (2,resultArray(i)) & "','" & orderArray (1,resultArray(i)) & "',false,'url');"
end if
next
end sub
Jeg har skrevet writelist om til dig, jeg kan se at du kun har to niveauer, ellers kan orderTest bruges til n-niveauer, den skal man bare tage højde for i writeList, men så bliver det lidt mere indviklet.
stay cool
KeRs