2011-07-13 59 views
0

我有一個關於asp.My問題的問題是;表結構類似的東西。那些列已調用MenuID, Alt_MenuID, Menu_Adi。最後,我想在菜單表中的menu_adi列中顯示這些項目。通過ASP代碼顯示錶內的菜單名稱

例如;

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

你是一個遞歸函數和一個「父」字段在正確的道路上,但你似乎可以使用像這樣子的功能,並沒有真正的問題不只是「常規」的方式做事。

要在該項目前獲得正確數量的破折號,請在調用遞歸之前傳遞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) %> 

我已經刪除了,如果/結束,如果需要,把它的正常功能,因此您可以與輸出做更多的(所以你可以通過它重新進入遞歸)。

相關問題