Forum

Asp Menü yazdı...
 
Bildirimler
Hepsini Temizle

Asp Menü yazdır(ama)ma sorunu

4 Yazılar
2 Üyeler
0 Reactions
515 Görüntüleme
(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

Arkadaşlar merhaba,

Uzun süredir üzerinde kafa yorduğum fakat bir türlü çözemediğim bir sorunum var.
Umarım anlatımım çok karışık gelmez. Fikir verebilirseniz çok mutlu olurum.

Derdim  menüler tablosundan menüleri yazdırmak, yazdırırken ilgili menünün alt_menüsü var ise onuda yazdırmak. Alt_menünün yine alt_menüleri varsa onlarıda yazdırmak. fakat kaç tane alt_menü olduğu bilinmiyor.

Tablo yapısı şöyle MenuID  Alt_MenuID   Menu_Adi 

Örnek
MenuID  Alt_MenuID Menu_Adi

1           0                Anasayfa

2           0                Urunler

3           2                Bisiklet                     (Alt_MenuID=2 | MenuID=2 ye eşit. Yani bisiklet, Urunlerin altmenüsü) 

4           3                Üç Tekerlekli bisiklet  (Alt_MenuID=3 | MenuID=3 ye eşit. Yani Üç Tekerlekli bisiklet, Bisikletin altmenüsü) 

5           0                İletişim

6           5               Harita (İletişimin Alt menüsü) 

şu şekilde yazdırmak istiyorum

- Anasatfa
- Ürünler
- - Bisiklet
- - - Üç tekerlekli bisiklet
- İletişim
- - Harita

Bunun için şöyle bir fonksiyon yazmaya uğraştım durdum.

<%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)%> 

 
Gönderildi : 13/07/2011 01:39

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Arkadaşlar merhaba,

Uzun süredir üzerinde kafa yorduğum fakat bir türlü çözemediğim bir sorunum var.
Umarım anlatımım çok karışık gelmez. Fikir verebilirseniz çok mutlu olurum.

Derdim  menüler tablosundan menüleri yazdırmak, yazdırırken ilgili menünün alt_menüsü var ise onuda yazdırmak. Alt_menünün yine alt_menüleri varsa onlarıda yazdırmak. fakat kaç tane alt_menü olduğu bilinmiyor.

Tablo yapısı şöyle MenuID  Alt_MenuID   Menu_Adi 

Örnek
MenuID  Alt_MenuID Menu_Adi

1           0                Anasayfa

2           0                Urunler

3           2                Bisiklet                     (Alt_MenuID=2 | MenuID=2 ye eşit. Yani bisiklet, Urunlerin altmenüsü) 

4           3                Üç Tekerlekli bisiklet  (Alt_MenuID=3 | MenuID=3 ye eşit. Yani Üç Tekerlekli bisiklet, Bisikletin altmenüsü) 

5           0                İletişim

6           5               Harita (İletişimin Alt menüsü) 

şu şekilde yazdırmak istiyorum

- Anasatfa
- Ürünler
- - Bisiklet
- - - Üç tekerlekli bisiklet
- İletişim
- - Harita

Bunun için şöyle bir fonksiyon yazmaya uğraştım durdum.

<%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)%> 

 

Merhaba,

 

Kullandığınız fonksiyonu şunun gibi denermisiniz.

 

var rs = 'Select all root records sort by MenuID';

while (r = rs.NextRecord) {
    GenerateMenuCode(r.MenuID);
    GenerateSubMenuCode(r.MenuID);
    // optionally add trailing code here for MenuID
}

function GenerateSubMenuCode(id) {
    var rs = 'Select all records where id is the parent record sort by MenuID';
    while (r = rs.NextRecord) {
        GenerateMenuCode(r.MenuId);
        GenerateSubMenuCode(r.MenuId);
        // optionally add trailing code here for MenuID
    }
}

 

Yani burada burada alt_menuID dediğinizi şeyi daha tanımlanabilir hale getirirseksek parent olarak tanımlayabiliriz.Burada sen çoğunlukla parent/child tablo yapısını kullanmak istiyorsun.Bunun için yukarıda verdiğim kodu deneyebilirsin.

 2. olarak şuna benzer bir şey deneyebilirsin.

 <%
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) %>

 

Saygılar,

 
Gönderildi : 14/07/2011 01:32

(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

Sevgili dostum ilgin için teşekkürler, şehir dışındaydım.

Deneme fırsatım olmadı. biran önce deneyip, sonucu yazarım.

 
Gönderildi : 29/07/2011 18:27

(@ZaferDANYILDIZ)
Gönderiler: 44
Trusted Member
Konu başlatıcı
 

Hocam yazdığın ikinci fonksiyona benzer bir fonksiyonla işimi hallettim.

İlgin için teşekkür ederim

 
Gönderildi : 17/08/2011 02:00

Paylaş: