ASP.Net’te DataTable, List vb. türlerde aldığımız verileri ekranda gösterebilmek için birçok yöntem olmasına rağmen en çok 4 kontrol kullanılmaktadır: GridView, DataList, ListView, Repeater. Bu makalemizde Repeater kontrolünün nasıl kullanıldığını inceleyeceğiz. İlerleyen makalelerimizde bu konuyu daha detaylandıracağız.
Repeater, dizaynı tamamen kullanıcı tasarımına bırakılmış ve çooğunlukla Source kodlarıyla işlem yapılan bir akontroldür. Gelen verimizi istediğimiz yere istediğimiz gibi ekleyebiliriz. GridView’daki gibi tablolara bağımlılık söz konusu değildir.
Repeater kontrolü kullanılırken kontrol içindeki şablonlar (template’ler) hazırlanır ve bu template’ler çerçevesinde verilerimiz ekranda gösterilir. Kontrolümüzde 5 çeşit template bulunmaktadır:
ItemTemplate
|
Ekranda göstereceğimiz satırların tasarımını düzenlediğimiz şablondur.
|
AlternatingItemTemplate
|
Satırların tasarımlarının farklı olması isteniyorsa bu şablon sayesinde farklı tasaımlar da yapılabilmektedir.
|
HeaderTemplate
|
Verilerin üstündeki başlık alanıdır.
|
FooterTemplate
|
Verilerin altındaki alandır.
|
SeparatorTemplate
|
Her 2 satır arasındaki alanın tasarım şablonudur.
|
Şimdi bu kontrolümüzü bir örnek uygulama üzerinde inceleyelim. Yeni bir ASP.NET Web Application oluşturalım.
Oluşturduğumuz projede Default.aspx dosyamıza gidelim ve Toolbox’tan Data sekmesi altından Repeater kontrolünü sürükleyip ekrana bırakalım.
Sürükle bırak işleminden sonra sayfamızın Source kodu aşağıdaki gibi olacaktır.
- <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
- CodeBehind="Default.aspx.cs" Inherits="AspNetRepeaterControl._Default" %>
- <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
- </asp:Content>
- <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
- <asp:Repeater ID="Repeater1" runat="server">
- </asp:Repeater>
- </asp:Content>
Ekranda ürünlerimizi listeleyeceğimiz bir yapı oluşturalım. Bunun için öncelikle bir ürün model sınıfı oluşturalım.
Urun.cs
- public class Urun
- {
- public string UrunAd { get; set; }
- public double UrunFiyat { get; set; }
- }
Default.aspx sayfamızın Page_Load methoduna gidelim ve ürünlerimi Repeater kontrolümüze bağlayalım.
Default.aspx.cs
- protected void Page_Load(object sender, EventArgs e)
- {
- List<Urun> urunler = new List<Urun>
- {
- new Urun{UrunAd = "Kola",UrunFiyat = 2},
- new Urun{UrunAd = "Meyve Suyu",UrunFiyat = 1},
- new Urun{UrunAd = "Gazoz",UrunFiyat = 1},
- new Urun{UrunAd = "Su",UrunFiyat = 0.5}
- };
- Repeater1.DataSource = urunler;
- Repeater1.DataBind();
- }
Ürünleri Repeater’da göstermek için Source kodumuzda aşağıdaki düzenlemeleri yapalım ve inceleyelim.
Default.aspx
- <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
- CodeBehind="Default.aspx.cs" Inherits="AspNetRepeaterControl._Default" %>
- <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
- </asp:Content>
- <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
- <asp:Repeater ID="Repeater1" runat="server">
- <ItemTemplate>
- <div style="width:400px; height:20px;">
- <div style="width:150px; height:100%; float:left; font-weight:bold">
- <%#DataBinder.Eval(Container.DataItem,"UrunAd") %>
- </div>
- <div style="width:250px; height:100%; float:left">
- <b>:</b> <%#DataBinder.Eval(Container.DataItem,"UrunFiyat") %> TL
- </div>
- <//div>
- </ItemTemplate>
- </asp:Repeater>
- </asp:Content>
1. Repeater’da verilerimizi listeleyeceğimiz ItemTemplate’i oluşturuyoruz.
- <ItemTemplate>
- </ItemTemplate>
2. Ürünlerin ekranda gösterebilmek için DataBinder.Eval methodunu kullanıyoruz. Buradaki Container.DataItem ile DataSource’a eklediğimiz (urunler listesi) veriyi alıyoruz ve ikinci parametrede bu verinin “UrunAd” özelliğini alıyoruz.
- <%#DataBinder.Eval(Container.DataItem,"UrunAd") %>
Benzer işlemi UrunFiyat için de gerçekleştiriyoruz.
Şimdi projemizi çalıştıralım ve ürünlerimizin gelip gelmediğini görelim.
Ürünlerimiz ekranda listelenmiştir.
Bir sonraki makalemizde Repeater kontrolünün HeaderTemplate, FooterTemplate ve SeparatorTemplate’lerini inceleyeceğiz.
Veysel Uğur KIZMAZ