В настоящее время я закончил работу с ASP - SQL2000.Я запускаю его из одной таблицы и одного запроса.
Для таблицы потребуется как минимум: -
ID (INT)
label (char or varchar - the text that appears on the page)
sub (BIT or Boolean - if true then it has submenus)
level (the parent link - for submenus only)
link (char or varchar - what happens when you click!)
seq (INT - to order the menus and submenus)
SQL или запрос для элементов корневого меню: -
SELECT [id],label,[level],sub,link FROM TOC where level=0 order by seq
Тогда: -
SELECT [id],label,[level],sub, [link] FROM TOC WHERE [level]<>0 order by [level],seq
Для подменю ..
Наконец, ASP (oMenuRoot - это набор записей для меню ROOT, oMenuSub - это набор записей для меню SUB: -
<%do until oMenuRoot.eof%>
,"<%=oMenuRoot("label")%>","<%
if oMenuRoot("sub") then
response.write "show-menu=" & oMenuRoot("id")
else
response.write Application("homePage") & "?" & oMenuRoot("link")
end if
%>",,"",1<%=vbcrlf%>
<%intRoots=intRoots+1
oMenuRoot.movenext
loop
do until oMenuSub.eof
if intOldTree<>oMenuSub("level") then
blnNewTree=true
response.write "])" & vbcrlf
else
blnNewTree=false
end if
if blnNewTree then
response.write "addmenu(menu=["""
response.write oMenuSub("level")
response.write """," & vbcrlf
response.write ",,120,1,"""",style1,,""left"",effect,,,,,,,,,,,," & vbcrlf
end if
response.write ",""" & oMenuSub("label") & ""","""
if oMenuSub("sub") then
response.write "show-menu=" & oMenuSub("id")
else
response.write Application("homePage") & "?" & oMenuSub("link")
end if
response.write """,,,1" & vbcrlf
intOldTree=oMenuSub("level")
oMenuSub.movenext
loop
response.write "])" & vbcrlf
%>
Это предварительная рабочая модель, но она работает без проблем, вы можете улучшить ее, используя один SQL-запрос и записывая весь вывод в разметку ASP.