Ana Sayfa
Forumlar
Hakkımızda
Yükleniyor. Lütfen bekleyin ...
Kategoriler
ASP.NET
ADO.NET
Visual Basic .NET
Visual C# .NET
Visual Studio ve Araçlar
Windows Server System
Office System
.NET Framework
SQL Server
XML Web Servisleri
Yazılım Güvenliği
Yazılım Mühendisliği
Mobil Teknolojileri
Dynamics
Smart Client
Expression Studio
Silverlight
Kod Parçaları
Açık Kaynak Kodlu Uygulamalar
İş Zekası
Windows Mobile Embedded
0
Çıkış Yap
Üyelik Bilgilerimi Güncelle
Seminerlerim
Favorilerim
Ajanım
Yazgeliştir
Yazar olmak ister misiniz?
Forumlar
Kitap Önerileri
Haberler
Yazarlar
İpuçları
Görüşleriniz
Hakkımızda
İstatistikler
En son kayıt olan üye:
kkizilhan
Şuanki online üyeler (
12
) :
bexooo
,
kkizilhan
,
tolgaali
,
tbt
,
YazarYadigar
,
rubincan
,
ollyverkan
,
gradient
,
mehmetali_cil
,
vedanta
,
bymeftun
,
yusufcuk46
ASP.NET Kategorisi
»
Kategorileme ve İç içe Repeater Kontrolü Kullanmak
Kategorileme ve İç içe Repeater Kontrolü Kullanmak
Print Versiyonu
Yazar:
Adem AKTEPE
Tarih:02.12.2008
Puan:
4,09
(Oy Kullanan:
11
)
Okuma Sayısı:
325
Makaleyi İşaretle
Makale Özeti
Merhaba arkadaşlar. Bu makalemde Kategorileme mantığı ve Repeater içerisinde repeater kontrolünün kullanımı göreceğiz
Makale
Kategorileme ve İç içe Repeater Kontrolü Kullanmak
Merhaba arkadaşlar. Bu makalemde Kategorileme mantığı ve Repeater içerisinde repeater kontrolünün kullanımı göreceğiz
İlk olarak işe veri tabanımızı tasarlamak ile başlayalım. Ana kategori ve Alt kategorilerin tutulduğu tabloyu aşağıdaki gibi oluşturup Kategoriler isminde kaydedelim.
Ana kategorileri, alt kategorilerden ayıran hücremiz
MainKategori
adındaki hücre. Buradaki mantık şu şekilde. Eğer
MainKategori
alanımız
0
ise bu bir ana kategoridir. Alt kategorileride
AnaKategorisi
hücresinden anlayacağız.
AnaKategorisi
hücresindeki sayı herhangi bir kategorinin
KategoriId
si ile aynı ise bu onun alt kategorisidir. Verileri girilmiş bir tablo örneğine bir göz atalım.
Verileri girilmiş tabloya bakarsak
MainKategori
hücresindeki 0 olanlar Ana kategoriyi temsil ediyor. Yani Ehliyet Sınavları, OKS Sınavları, ÖSS Sınavları ve Microsoft Sertifika birer
Ana kategori.
Trafik, İlk Yardım, Motor kategorileri
Ehliyet Sınavları
kategorisinin
Alt kategorileridir
.
Matematik, Coğrafya, Fizik kategorileri OKS Sınavları nın
Alt kategorileridir.
Tablomuzun mantığını anladıktan sonra sayfamıza bir repeater kontrolü ekleyelim ve ID sini
rpAnaKategori
olarak değiştirelim. Biliyorsunuzki Repeater kontrolünün tasarımına Visual Studio Design kısmından müdahale edemiyoruz. Code kısmına girip Tasarımızı html kodları yardımıyla yapmamız gerekecek. Bunun için Repeater kontrolünün içerisine ItemTemplate ekliyoruz ve içerisine kategorilerimizi çektiriyoruz.
<
asp
:
Repeater
ID
="rpAnaKategori"
runat
="server">
<
ItemTemplate
>
<%
#
Eval(
"KategoriAdi"
)
%>
//Kategori ismini çektirdik.
<
br/
>
</
ItemTemplate
>
</
asp
:
Repeater
>
Page Load Eventine gelip Repeater içerisine Ana Kategorilerimizi Çektirelim.
SqlConnection
baglanti =
new
SqlConnection
(
@"Data Source=localhost;Initial Catalog=TestPort;Integrated Security=True;"
);
//MainKategori=0 ile sadece ana kategorileri çektirmiş olduk
SqlCommand
cmdAnaKat =
new
SqlCommand
(
"Select * from Kategoriler Where MainKategori=0"
, baglanti);
rpAnaKategori.DataSource = cmdAnaKat.ExecuteReader();
rpAnaKategori.DataBind();
cmdAnaKat.Dispose();
baglanti.Close();
Bu haliyle sadece Ana kategorileri Alt Alta sıralamış olduk. Şimdi Repeaterımın içerisine bir repeater daha koyup adını rpAltKategori yapıp ve Ana kategoriler her dönüşünde Alt kategorilerini kontrol edip, alt kategorisi varsa listelemesini yapalım. Repeaterımızı şu şekilde düzenliyoruz.
<
asp
:
Repeater
ID
="rpAnaKategori"
runat
="server">
<
ItemTemplate
>
<%
#
Eval(
"KategoriAdi"
)
%>
<
br
/>
<
asp
:
Repeater
ID
="rpAltKategori"
runat
="server">
<
ItemTemplate
>
<%
#
Eval(
"KategoriAdi"
)
%>
<
br
/>
</
ItemTemplate
>
</
asp
:
Repeater
>
</
ItemTemplate
>
</
asp
:
Repeater
>
Gördüğünüz gibi rpAnaKategori Repeaterının içerisine
rpAltKategori
adında bir Repeatar daha oluşturduk ve içerisine ItemTemplate ekleyip
KategoriAdi
ni çektirdik. Şimdi yapmamız gereken Ana Kategoriler her döndüğünde Alt kategorileri altına listelemek.
Ana Kategoriler her döndüğünde Alt kategorinin kontrol edilmesi için rpAnaKategori ye
ItemDataBound
eventi oluşturmamız gerekiyor. rpAnaKategori kontrolünün ilk satırı aşağıdaki gibi olacaktır.
<
asp
:
Repeater
ID
="rpAnaKategori"
OnItemDataBound
="rpAnaKategori_ItemDataBound"
runat
="server">
Şimdi bu Eventi sayfamızın .cs kısmında yazalım.
protected
void
rpAnaKategori_ItemDataBound(
object
sender,
RepeaterItemEventArgs
e)
{
Repeater
rp = (
Repeater
)e.Item.FindControl(
"rpAltKategori"
);
//İç tarafdaki rpAltKategori kontrolüne erişiyoruz ve rp değişkenine atıyoruz
SqlConnection
baglanti =
new
SqlConnection
(
@"Data Source=localhost;Initial Catalog=TestPort;Integrated Security=True;"
);
//Ana Kategoriye bağlı alt kategorileri seçiyoruz
SqlCommand
cmdAltKat =
new
SqlCommand
(
"Select * from Kategoriler where AnaKategorisi="
+
Convert
.ToInt32(
DataBinder
.Eval(e.Item.DataItem,
"KategoriId"
).ToString()), baglanti);
rp.DataSource = cmdAltKat.ExecuteReader();
rp.DataBind();
cmdAltKat.Dispose();
baglanti.Close();
}
Böylece Ana ve Alt kategorileri Alt Alta çekmiş Olduk. İsterseniz birde buna ufak bir javascript kodu ekleyip Alt kategorileri gizleyelim. İlk olarak Ana Kategori isimleri görünsün, Ana kategorilere tıklandığında alt kategorilerini gösterelim. Ana kategorileri ve Alt kategorileri birbirinden ayırmak için 2 farklı resim kullanalım.
Ana Kategori Resmi (Resim Adı: menukapali.png)
Alt Kategori Resmi (Resim Adı: menuacik.png)
Javascript kodunuzu Head bölümüne ekleyin
<
SCRIPT
language
="javascript">
function
show(id) {
obj = document.getElementById(id);
if
(obj.style.display ==
'block'
) {
obj.style.display =
'none'
}
else
{
obj.style.display =
'block'
}
}
</
SCRIPT
>
Şimdi Repeaterlarımızda biraz düzenleme yapacağız. Ana ve alt kategorin yanlarına resimlerimizi koyacağız. Alt kategorileri listeleyen rpAltKategori kontrolümüzü gizlenip açılması için bir div tagı içine alacağız. Bu dive erişmemiz için Idsi Ana Kategorinin Id si olacak. Ana kategori ismine link verip javascriptimizdeki show fonksiyonuna KategoriId sini gönderiyoruz.
Bu fonksiyonun yaptığı iş kendisine gelen değeri sayfada bulup display özelliği none ise block yapmak, block ise none yapmak J
<
asp
:
Repeater
ID
="rpAnaKategori"
OnItemDataBound
="rpAnaKategori_ItemDataBound"
runat
="server">
<
ItemTemplate
>
<
img
align
="absmiddle"
src
="imajlar/menukapali.png"
/>
<
a
href
='javascript:show(
<%
#Eval("KategoriId")
%>
)'>
<%
#
Eval(
"KategoriAdi"
)
%>
</
a
>
<
br
>
<
div
id
='
<%
#Eval("KategoriId")
%>
'
style
="
DISPLAY
:
none">
<
asp
:
Repeater
ID
="rpAltKategori"
runat
="server">
<
ItemTemplate
>
<
img
align
="absmiddle"
src
="imajlar/menuacik.png"
/>
<%
#
Eval(
"KategoriAdi"
)
%>
<
br
/>
</
ItemTemplate
>
</
asp
:
Repeater
>
</
div
>
</
ItemTemplate
>
</
asp
:
Repeater
>
Evet arkadaşlar şimdi uygulamamızı çalıştırıp kategorilemizi ve repeaterlarımızın şeklini görebiliriz.
Göründüğü gibi Turuncu olanlar Ana Kategori, Mavi olanlar alt kategoridir. Ben daha sonradan Ana ve Alt kategori yazılarına style tanımladım. İç içe 2 tanemi repeater kullanılıyor Tabiki Hayır. İstediğiniz kadar repeatarı iç içe
ItemDataBound
ları unutmadan kullanabilirsiniz J
Bu örnekte iç içe 3 repeatarın kullanılmış hali ;) Bir sonraki makalemde görüşmek üzere
Makaleyi nasıl buldunuz?
Makaleyi nasıl buldunuz?
Çok Kötü
Çok Yararlı
Görüşleriniz : (opsiyonel)
v2.4
Geri Bildirim (Feedback)
Site içerisinde yazılan tüm makalelerin yazım ve yayınlama hakkı aksi belirtilmediği sürece sadece yazarlara aittir.
Yazgelistir.Com Ekibi - 2006 -
Yazgelistir.com