我有关于asp.My问题的问题;表格结构类似于那些。这些列调用了MenuID
,Alt_MenuID
,Menu_Adi
。最后,我想在菜单表的menu_adi
列中显示这些项目。
例如;
MenuID Alt_MenuID Menu_Adi
1 0 Anasayfa
2 0 Urunler
3 2 Bisiklet (Alt_MenuID=2 is equal to MenuID=2,So the sub menu of urunler is bisiklet)
4 3 Üç Tekerlekli Bisiklet (Alt_MenuID=3 is equal to MenuID=3.So,the sub menu of bisiklet is Üç Tekerlekli Bisiklet)
5 0 İletişim
6 5 Harita(sub menu of the iletişim)
我希望像那样展示。
- Anasayfa
- Ürünler
- - Bisiklet (sub menu)
- - - Üç tekerlekli bisiklet ( sub menu of the bisiklet)
- İletişim
- - Harita ( sub menu)
我正在使用下面的功能。
<%function MenuYazdir(MenuID,say)
Set Liste = Data.Execute("Select MenuID,Alt_MenuID,MenuAd From Menuler Where Alt_MenuID="& MenuID)
if Liste.Eof=False Then
Do Until.Liste.Eof
Response.write("-"& Liste("MenuAd") &"<br>")
call MenuYazdir(Liste("MenuID"),0)
Liste.MoveNext
Loop
End if
Set Liste = Nothing
End function%>
<% call MenuYazdir(0,0)%>
答案 0 :(得分:0)
你在一个带有递归函数和“父”字段的正确路径上,但是你似乎正在使用像sub这样的函数,这并不重要,只不是“常规”的做事方式。 / p>
要在项目之前获得正确数量的破折号,请传递level
变量并在调用递归之前递增它。
尝试这样的事情:
<%
Function MenuYazdir(MenuID,strOutput, intLevel)
Set Liste = Data.Execute("Select MenuID,Alt_MenuID,MenuAd From Menuler Where Alt_MenuID="& MenuID)
Do While NOT Liste.Eof
For i = 1 to intLevel
strOutput = stroutput & "- "
Next
strOutput = strOutput & Liste("MenuAd") &"<br>"
intLevel = intLevel + 1
strOutput = MenuYazdir(Liste("MenuID"), strOutput, intLevel)
intLevel = intLevel -1
Liste.MoveNext
Loop
Set Liste = Nothing
End Function
%>
<%= MenuYazdir(0,0) %>
我已经删除了对if / end if的需要并将其转换为正确的函数,因此您可以对输出执行更多操作(因此您可以将其传递回递归)。