salve a tutti.
ho provato a fare un menu a tendina gerarchico tramite asp ma non riesco a rigirarmici.
l'idea progettuale è questa.
nel database ho i seguenti campi
id, etichetta, ordine, subvoce, link, sottSioNo
a me serve anche sapere se una voce di menu è la prima o l'ultima e la stessa cosa con le voci dei sottomenu
ho messo la tabella in un array
quindi ho fatto un ciclo che mi trovi la prima voce che formatterò in modo speciale.
poi cerco una voce diversa da prima e ultima e cerco tutte le voci correlate mettendole in un array diverso.
dopodichè stampo la voce root e le relative (eventuali) voci di sottomenu.
poi stampo l'ultima voce
ovviamente si fa prima a dirsi che a farsi, infatti mi mette i dati in un ordine che non capisco proprio.
potreste darmi una mano?
grazie
PS per il momento fa solo un elenco ricavando i dati da database senza nessuna formattazione.
codice:<% 'individuo la prima voce di menu for i=0 to contovoci-1 if arrvocy(i, 3)=0 then response.Write("<li class=""first"">"& arrvocy(i, 1) &"") ' i=contovoci end if next 'individuo voci di menu centrali dim vocisot() for t=0 to contovoci-1 'verifico che NON sia la prima o l'ultima voce di menu if arrvocy(t, 3)<>0 AND arrvocy(t, 3)<>999 then '999=ultima voce di menu. stabilito arbitrariamente 'ricerco sottomenu per la voce t attuale dim sot sot=0 for s=0 to contovoci-1 'conto quante voci di sottomenu ci sono if s<>t AND arrvocy(s, 3)<>0 AND arrvocy(s, 6)<>0 AND arrvocy(s, 3)<>999 AND arrvocy(s, 4)=arrvocy(t, 0) then sot=sot+1 end if next redim vocisot(sot+1, 6) for y=0 to sot if y<>t AND arrvocy(y, 3)<>0 AND arrvocy(y, 6)<>0 AND arrvocy(y, 3)<>999 AND arrvocy(y, 4)=arrvocy(t, 0) then vocisot (y, 0) = arrvocy(y, 0) 'id vocisot (y, 1) = arrvocy(y, 1) 'etichetta vocisot (y, 2) = arrvocy(y, 2) 'lingua vocisot (y, 3) = arrvocy(y, 3) 'ordine vocisot (y, 4) = arrvocy(y, 4) 'subvoce vocisot (y, 5) = arrvocy(y, 5) 'link vocisot (y, 6) = arrvocy(y, 6) 'sottomenuSioNo end if next response.Write( arrvocy(t, 1) &" " ) for q=0 to ubound(vocisot)-1 if vocisot(q, 1)<>"" then response.Write(" "&vocisot(q, 1)&" " ) end if next end if next

Rispondi quotando