BAĞLANTILARIM

Takip Edin:

0

Asp.net iç içe Repeater veya iç içe ListView kullanımı

Cuma, Nisan 17, 2015 / / , ,



İç içe listeleme işlemlerinde aşağıdaki yöntem kullanılabilir. Örnekte dıştaki ListView kontrolünde odalar ve odalara ait genel bilgiler listelenirken; içte kullanılan Repeater kontolünde ise oda tipine göre odaların özellikleri dolduruldu.(Balkon, Bahçe, Havuz vs..) 

Aynı işlem Repeater içinde Repeater veya ListView içinde ListView olarak da kullanılabilir.


Tasarım tarafı: kontrollerin yerleşimi

<table class="tabloRezervasyon">
                    <tr>
                        <th style="width: 30%;">Oda</th>
                        <th style="width: 10%; text-align:center;">Maks. Kişi</th>
                        <th style="width: 25%;">Bilgi</th>
                        <th style="width: 15%; text-align:center;">Fiyat</th>
                        <th style="width: 20%;">Rezervasyon</th>
                    </tr>
                    <asp:ListView ID="lvListe" runat="server" OnItemDataBound="lvListe_ItemDataBound">
                        <ItemTemplate>
                            <tr>
                                <td><a href="RezervasyonOdaDetay.aspx?odaTipId=<%#Eval("OdaTipId") %>" class="various" data-fancybox-type="iframe"><%#Eval("Fotograf").ToString()!=String.Empty ? "<img src=\"images/oda/" + Eval("Fotograf") + "\" alt=\"\" class=\"odaFoto\" />" : "<i class=\"fa fa-4x fa-camera odaFotoYok\"></i>" %></a>
                                  <a href="RezervasyonOdaDetay.aspx?odaTipId=<%#Eval("OdaTipId") %>" class="turuncu17 various" data-fancybox-type="iframe"><%#Eval("OdaAd") %></a>
                                    <br />
                                    <br />
                                    <asp:Repeater ID="repeatOzellik" runat="server">
                    <HeaderTemplate><ul class="listeOzellik"></HeaderTemplate>
                    <ItemTemplate>
                        <li><i class="fa fa-circle"></i><span class="siyah14"><%#Eval("OzellikAd") %></span></li>
                    </ItemTemplate>
                    <FooterTemplate></ul></FooterTemplate>
                </asp:Repeater>
                                </td>
                                <td style="text-align:center;"><%#Eval("KisiKapasite") %> Kişi</td>
                                <td><%#Eval("KisaBilgi").ToString().Length>130 ? ""+Eval("KisaBilgi").ToString().Substring(0,130)+"..." : ""+Eval("KisaBilgi")+"" %></td>
                                <td style="text-align:center;"><span class="turuncu17"><%#Eval("Fiyat") %> <%#Eval("ParaTipi") %></span></td>
                                <td>
                                    <asp:LinkButton ID="btnRezervasyonYap" runat="server" CssClass="buton turuncu">Rezervasyon Yap</asp:LinkButton></td>
                            </tr>
                        </ItemTemplate>
                    </asp:ListView>
                </table>



Kod tarafı:


Dıştaki kontrol normal şekilde doldurulur.
İçteki Repeater ise dıştaki kontrolün ItemDataBound olayında aşağıdaki şekilde doldurulur.


        protected void lvListe_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            try
            {
                odaTipId = DataBinder.Eval(e.Item.DataItem, "OdaTipId").ToString(); //Dıştaki kontrolden OdaTipId isimli alanın değerini aldık.
                VeriMsSQL.Islem islem = new VeriMsSQL.Islem();
                DataTable dt = islem.OzellikOdaListe(odaTipId);
                if (dt.Rows.Count > 0)
                {
                    Repeater repeatOdaOzellik = e.Item.FindControl("repeatOzellik") as Repeater;
                    repeatOdaOzellik.DataSource = dt;
                    repeatOdaOzellik.DataBind();

                }
                dt.Dispose();
            }
            catch (Exception)
            {
            }
        }

SON YORUMLAR