Şimdi Ara

Asp.Net ile iç içe Repeater kullanımı-Farklı yöntem

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
1
Cevap
0
Favori
2.665
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar,

    Asp net ile repetar kullanımını bir adım öteye götürerek iki farklı tablodan repeater ile bilgi çekip iç içe kullanmasını göstermek istiyorum.Bunun için öyle uzun uzun kodlamalara yada döngülere ihtiyacınız yok.

    Örnekle açıklamak gerekirse;

    İki ayrı tablonuz var.

    Tablo 1 “Parent_Categories”

    Tablo 2 “Categories”

    Yeni bir proje oluşturup,
    iki tane repeater koyalım.Daha düzgün bir görüntü elde etmemiz için aşağıda örnekte verdiğim gibi yapabilirsiniz.
    Component isimleri örnekte şu şekilde kullanılacaktır.

    1-repeater: rpAnaMenu

    2.repeater: rpAltMenu

    .aspx dosyası :
    <table style=”width: 250px” bgcolor=”#F7F7DE”> 
    <tr>
    <td align=”left” style=”color:White;background-color:#F7F7DE;font-weight:bold;”>
    <ul id=”menu”>
    <asp:Repeater ID=”rpAnaMenu” OnItemDataBound=”rpAnaMenu_itemdatabound” runat=”server” >
    <ItemTemplate>
    <li>
    <a href=”#”><%#Eval(“ParentName”) %></a>
    <ul>
    <asp:Repeater ID=”rpAltMenu” runat=”server” >
    <ItemTemplate>
    <li><a href=”#”><%#Eval(“Name”) %></a></li>
    </ItemTemplate>
    </asp:Repeater>
    </ul>
    </li>
    </ItemTemplate>
    </asp:Repeater>
    </ul>
    </td>
    </tr>
    </table>


    Burda dikkatinizi çekmek istediğim şey kırmızıyla belirttiğim repeater nesnesinin OnItemDataBound olayı. rpAnaMenu id numaralı nesne her repeater olduğunda OnItemDataBound olayındaki kodlar çalışır.Yani rpAnaMenu veritabanından bir veri çektiğinde bu olay içerisine yazdığımız kodlar çalışacaktır.

    Bundan sonrası işlemlerimizi artık view code penceresinde yapacağız.


    .aspx.cs dosyası:

    Formun PageLoad olayına rpAnaMenu nesnesinin içini dolduralım.


     protected void Page_Load(object sender, EventArgs e) 
    {
    rpAnaMenu.DataSource = GetDataSet(“Select * from Parent_Categories”);//1
    rpAnaMenu.DataBind();
    }


    Açıklama :
    //1getdataset burda kullanıcı tanımlı bir fonksiyon string olarak gönderilen değişken geriye dataset gönderiyor.yani siz veritabanı bağlantısını yapacak dataset nesnesine verileri dolduracak ve repeater nesnesinin datasource olayına bağlıcaksınız.

    Şimdi en son olarak OnItemDataBound olayını yazalım.

    protected void rpAnaMenu_itemdatabound(object sender, RepeaterItemEventArgs e) 
    {
    Repeater rp = (Repeater)e.Item.FindControl(“rpAltMenu”);//1
    rp.DataSource = GetDataSet(“Select * from Categories where ParentID=” + Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, “OID”).ToString()));//2
    rp.DataBind();
    }


    Açıklama :
    //1formda bulunan rpAltMenu nesnesini bulup rp isimli yeni oluşturduğumuz repeater a aktarıyoruz.
    //2şimdi rpAnaMenu her veri çektiğinde bu kod bloğu çalışacağı için Categories isimli tablodaki alt menüye ait ParentID ile Parent_Categories tablosundaki OID alanlarını birleştiriyoruz.
    Projeyi çalıştırdığımızda aşağıdaki bir ekran ile karşılaşacaksınız.

     Asp.Net ile iç içe Repeater kullanımı-Farklı yöntem


    Aklınıza takılan bir yer olursa sormaktan çekinmeyin.
    Kolay gelsin.



    < Bu mesaj bu kişi tarafından değiştirildi ameroglu -- 21 Mart 2013; 22:20:21 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.