
Aralık 27, 2009 18:25 by
molks
Yazının son bölümünde belkide en çok kullanacağımız navigasyon şekline bakacağız.Veritabanında ilişkili olarak tutulmuş kategori - alt kategorileri Menu veya Treeview tarzı bir navigasyon kontrolünde göstermek.Böylece yönetici panelinden site sahibinin Menüye rahatça kategori - alt kategori ekleyebileceği dinamik bir yapı kazandırabiliriz.Bunu yapmak için genelde yazdığım 2 farklı kod var, birisi benim kendi kurgum ve sevdiğim bir yol , biraz kodları uzun olsada daha algoritmik , 2. sinde ise birkaç hazır methoddan faydalanacağız.Önce benim sevdiğim uzun yoldan başlayalım 
Benim daha önceden hazırlamış oldugum ETicaret veritabanı üzerinde kategori-altKategori tablolarım var.Sizde kendinize göre 2 tablo oluşturabilirsiniz.Ve burda yazacağımız kodları sizde benim gibi birer ascx uzantılı dosyada tutabilirsiniz yani bir User control haline getirebilirsiniz çünkü oldukça sık karşımıza çıkacak ve kullanacağımız bir kod olacak.Her seferinde tekrar tekrar aynı şeyi yazmak bir noktadan sonra sıkıcı hale gelebilir.
Şimdi ne yapıcağımızı düşünmeye başlayalım.Önce kategori ad larını ve id lerini çekmem lazım.Daha sonra bir iç içe for döngüsü kuracağım.Yani her bir kategori için 2. bir for döngüsü yaratıp bu for döngüsünün içinde o kategoriye ait alt kategorileri alacağım.Aslında bütün herşey bu basit mantıktan ibaret.Burada ilk for döngüsünün kaç kere döneceğini bilmem için kategorilerin sayısınada ihtiyacım var.sonrada kategori adlarını ve id lerini bir dizinin içine atacağım ;

evet artık veriler dizinin içinde.Şimdi sıra for döngülerime geldi. ilk for döngüsünün içinde Parent node lar yaratacağım , ikinci döngüde ki node lar child olacak.Parent ın altına bu child lar eklenecek.2 döngüden de dışarı çıktığımızda TreeView in içerisine parent ımızı ekleyeceğiz. Buraya kadar kurgu tamam. o zaman bunları koda dökelim.

evet ilk bakışta kodların biraz karmaşık gözüktüğünü kabul ediyorum ancak biraz üzerinde düşünüp kafa yorunca aslında anlamak çokda zor değil : )) bakalım bunca işlemin sonunda nasıl bir sonuç elde ettik 


01a03e0f-900e-46bb-86da-240e0fd0cdf5|5|4.6