Asp.net sonsuz kategori nasıl oluşturulur

Yine bir işimde lazım oldu hemen makaleleştirdim. EntityFramework ve Linq kullanarak Web siteniz için nasıl sonsuz kategori yapabilirsiniz onu anlatacağım.
Bu yapı sonsuz kategoriden oluşacağından Repeater,DataList gibi Controlleri kullanamayız. Bu yüzden Literal UnorderedList oluşturucağız.
Öncelikle veritabanı tablomuzu oluşturuyor. 
3 değişikenimizi var ID,Üst Kategori ID ve Kategori Adı
Ben önceden oluşturdum ve içine bir kaç içerik girdim.

sonsuz kategori veri tabanı tablo yapısı

Üstteki resimde dikkat edilmesi gereken üst kategorisi olmayanlara üst kategori id'sini " 0 " veriyoruz.
Kullanacağımız kodlar aşağıdaki gibidir.
        string cat_list= ""; 1)
        veritabaniEntities db = new veritabaniEntities (); 2)
        List<kategoriler> tumKategoriler;
        protected void Page_Load(object sender, EventArgs e)
        {
                tumKategoriler= db.kategoriler.ToList(); 3)
                Categories(0); 4)
                ltrCats.Text = cat_list; 
        }  
void Categories(int topCatID)
        {
            List<kategoriler> altKategoriler= tumKategoriler.Where(w => w.ust_cat_id== topCatID).ToList(); 5)
            if (altCats.Count == 0) 6)
                return;
            cat_list+= "<ul class='p15'>"; 7)
            foreach (kategoriler item in altCats) 8)
            {
                cat_list+= "<li><a href='urunler.aspx?catID= " + (int)item.id+ "'>" + item.cate_name+ "</a>"; 9)
                Categories((int)item.id); 10)
                cat_list+= "</li>"; 11)
            }
            cat_list+= "</ul>"; 12)
        }
Adımlar
1) Oluşacak kategoriler çıktısını tutacağımız değişken.
2) Veritabanı örneğimiz
3) Veritabanından tüm kategorileri çekiyoruz.
4) Üst kategorisi olmayan kategorileri çağırıyoruz.
5) Çağırılan üst kategorideki alt kategorileri alıyoruz.
6) Eğer alt kategori yoksa method'tan çıkıyoruz.
7) listenin ul etikeni açıyoruz.
8) Tüm alt kategoriler içinde dönüyoruz.
9) kategori listesinin elemanlarını oluşturmaya başlıyoruz ( <li> )
10) Bu alt kategorinin de alt kategorileri varsa diye aynı methodu tekrar çağırıyoruz ve method 5. maddeden itibaren tekrar çalışıyor.
11) Açılan ( <li> ) 'yi kapatıyoruz. ( </li> )
12) listeyi kapatıyoruz. ( </ul> )

Sonuç:

Yorumlar