Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

Asp.Net de İç İçe Repeater Kullanımı

 

Genel de menu yaparken yada bir listeleme yapacağımız zaman kullanacağımız bir özelliktir. Bende daha öncelerden brojelerimde kullandım ve faydası oluyor.

Üstelik kullanımı da çok basit. İsterseniz lafı uznatmadan koldalrımızı vereyim ben.

Veritabanımız;
SayfaId
SayfaAd_tr
root

Veritabanımız bu kadar arkadaşlar ister mssql ister access kullanın fark etmez.

İlk olarak default.aspx sayfamızı tasarlmaya başlayalım.

 

<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <%#Eval("SayfaAd_tr") %>
            <br />
            <asp:Repeater ID="Repeater2" runat="server">
                <ItemTemplate>
                    <%#Eval("SayfaAd_tr")%><br />
                </ItemTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

Default.aspx sayfamızda ki kodlarımız bu kadar arkadaşlar.

Şimdi ise Default.aspx.cs tarafında yzacağımız kodları görelim.

 

protected void Page_Load(object sender, EventArgs e)
{
        Repeater1.DataSource = datalistDoldur.DataTableAl("Select * from Sayfalar Where root=0");
        Repeater1.DataBind();
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rp = (Repeater)e.Item.FindControl("Repeater2");
        rp.DataSource = datalistDoldur.DataTableAl("select * from Sayfalar where root=" + Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "SayfaId").ToString()));
        rp.DataBind();
    }

Öncelikle ilk Repater'mızı load olayında dolduruyoruz. Ben kendim daha önceden yazdığım claslarımı kullandım sizin yapmanız gereken eğer class ınız yoksa object orianted bilginiz de yoksa önce connection sağlayıp sonra command la sorgu oluşturup bağlantıyı açarak datatable yardımıyla repeater imizi doldurabilirsiniz. yanlış hatılamıyorsam daha önceki yazılarımda bulunmakta.

Daha sonra ana repaterimizin ItemDataBound olayına üst kısımda bulunan diğer kodlarımızı yazıyorsunuz. 
İşlem bu kadar basit arkadaşlar. İsterseniz oluşturduğunuz repeater lara style verebilir görünümü daha güzel hale getirebilirsiniz.

 

Görüşmek üzere
Osman KURT
Yazılım Geliştrici Ve Grafiker

 

Yorumlar (7) -

  • Emre

    21.10.2013 17:53:32 | Yanıtla

    Merhaba,

    Acaba 3 datalist' i iç içe nasıl yaparız denedim fakat bir türlü yapamadım. İtemdatabound sadece ile datalistin veya repeater' a erişiliyor ikinci bir itemdatabound nasıl oluşturabilirim ?

    • osmankurt

      22.10.2013 20:39:50 | Yanıtla

      Merhaba Emre,
      Böyle kullanmaktansa sayfana bir adet literal at arka kısımda forech döngüsüyle html bas bence bu yöntem çok daha etkili olur senin durumun için çünkü bunun bir sınırı yok Smile

  • Fatih Parak

    26.1.2015 15:46:07 | Yanıtla

    peki ikinci repeater ItemDataBound nasıl kullanabiliriz.

  • mrcosgun

    14.3.2016 23:56:28 | Yanıtla

    hocam benim bir sorum var sitede 15 veya daha fazla repeader kullanılması hız yönünden bir zarar verir mi acaba?

    • osman kurt

      16.3.2016 22:28:00 | Yanıtla

      Merhaba,

      Yazdığınız sorgulara bağlı. Cache yapısını inceleyin derim.

  • Ayaz

    10.7.2016 17:52:33 | Yanıtla

    Merhaba, iç içe repeater oluşturduğumuzda 2. repeaterin içerisinde dönen verilere yada nesnelere nasıl erişebiliriz.

  • Ahmet

    31.7.2017 16:32:29 | Yanıtla

    Hocam Merhabalar. Bu örnekte şöyle bir sıkıntı oluyor. Sayfamız ana kategori sayfası bile olsa altına sanki alt kategorisi varmış gibi ul atıyor bunu nasıl düzenleriz acaba ?

Loading