Merhaba aşağıda iç içe asp.net repeater kullanımı anlatılmaktadır.
İç içe repeater kullanımı ve iç içe kategorileme mantığı aşağıda ado.net komutlarıyla deyimleriyle ele alınmıştır. Sonsuz alt kategori mantığını anlamak için database tablolarımıza bir göz atalım.
İç içe sonsuz kategorilemeyi kullanabilmek için tablomuzu aşağıdaki gibi tasarlamalıyız. Tabloda KategoriID ve UstKategoriID sutunları bulunmaktadır bu sütunlardan “KategoriID” primary key “UstKategoriID” satırı da alt kategorileri temsil etmektedir.
Olay şudur:
Satırlardan UstKategoriID’si lisanssız olanlar parent kategoridir.
UstKategoriID’sinde değer olanlar, değerin temsil ettiği parent kategoriye bağlıdırlar. Hatta bir alt kategoriye başka bir alt kategorinin id numarasını verirsek iç içe iki alt kat oluşturmuş oluruz.
Aşağıdaki tabloda bilgisayar, telefon, ev elektroniği ve ofis ve sarf malzemeler üst kategori, desktop pc id numarası 1 olan bilgisayarın, cep telefonu id numarası 2 olan telefon kategorisinin altında yer almaktadır.
Kategorilerimizi hiyerarşik bir şekilde göstermek için iç içe repeater kullanılabilir. Aşağıda iç içe repeater kullandık. Dış taki repeater (rptKategoriler) sadece ana kategorileri listeleyecek, içteki (rptAltKategori) ise hangi kategorideyse onun altındakileri listeleyecektir.
Yazılan OnItemDataBound eventi rptKategoriler id sine sahip nesnenin her veritabanından bir veri çektikten sonra OnItemDataBound eventinin çalışmasını sağlar. Bu alana altkategorileri listeleyeceğimiz kodları yazmalıyız.
Dıştaki repeaterin içine dolduruyoruz:
İç kategorileri listeleyecek OnItemDataBound olayı:
Örneklerdeki kodları kendinize göre kopyalayıp iç içe repeater kullanımı çalıştırabilirsiniz.
İç içe repeater kullanımı ve iç içe kategorileme mantığı aşağıda ado.net komutlarıyla deyimleriyle ele alınmıştır. Sonsuz alt kategori mantığını anlamak için database tablolarımıza bir göz atalım.
İç içe sonsuz kategorilemeyi kullanabilmek için tablomuzu aşağıdaki gibi tasarlamalıyız. Tabloda KategoriID ve UstKategoriID sutunları bulunmaktadır bu sütunlardan “KategoriID” primary key “UstKategoriID” satırı da alt kategorileri temsil etmektedir.
Olay şudur:
Satırlardan UstKategoriID’si lisanssız olanlar parent kategoridir.
UstKategoriID’sinde değer olanlar, değerin temsil ettiği parent kategoriye bağlıdırlar. Hatta bir alt kategoriye başka bir alt kategorinin id numarasını verirsek iç içe iki alt kat oluşturmuş oluruz.
Aşağıdaki tabloda bilgisayar, telefon, ev elektroniği ve ofis ve sarf malzemeler üst kategori, desktop pc id numarası 1 olan bilgisayarın, cep telefonu id numarası 2 olan telefon kategorisinin altında yer almaktadır.
Kategorilerimizi hiyerarşik bir şekilde göstermek için iç içe repeater kullanılabilir. Aşağıda iç içe repeater kullandık. Dış taki repeater (rptKategoriler) sadece ana kategorileri listeleyecek, içteki (rptAltKategori) ise hangi kategorideyse onun altındakileri listeleyecektir.
Kod:
<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="rptKategoriler_ItemDataBound">
<ItemTemplate>
<%#Eval("KategoriAdi") %>
<asp:Repeater runat="server" ID="rptAltKategori">
<ItemTemplate>
<%#Eval("KategoriAdi") %>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Yazılan OnItemDataBound eventi rptKategoriler id sine sahip nesnenin her veritabanından bir veri çektikten sonra OnItemDataBound eventinin çalışmasını sağlar. Bu alana altkategorileri listeleyeceğimiz kodları yazmalıyız.
Dıştaki repeaterin içine dolduruyoruz:
Kod:
SqlConnection conn = new SqlConnection("server=.;database=databaseadi;uid=sa;pwd=123");
SqlCommand cmd = new SqlCommand("select * from Kategoriler where UstKategoriID IS lisanssız", conn);
conn.Open();
rptKategoriler.DataSource = cmd.ExecuteReader();
rptKategoriler.DataBind();
conn.Close();
İç kategorileri listeleyecek OnItemDataBound olayı:
Kod:
protected void rptKategoriler_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rp = (Repeater)e.Item.FindControl("rptAltKategori"); //İç tarafdaki rpAltKategori kontrolüne erişiyoruz ve rp değişkenine atıyoruz
SqlConnection baglanti = new SqlConnection("server=.;database=databaseadi;uid=sa;pwd=123");
//Ana Kategoriye bağlı alt kategorileri seçiyoruz
SqlCommand cmdAltKat = new SqlCommand("Select * from Kategoriler where UstKategoriID=" + Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "KategoriID").ToString()), baglanti);
baglanti.Open();
rp.DataSource = cmdAltKat.ExecuteReader();
rp.DataBind();
cmdAltKat.Dispose();
baglanti.Close();
}
Örneklerdeki kodları kendinize göre kopyalayıp iç içe repeater kullanımı çalıştırabilirsiniz.