Anasayfa / Yazılım / ASP.NET / Repeater Kullanımı

Repeater Kullanımı

.NET Framework ortamında veritabanından çekmiş olduğumuz verileri gösterebilmek için bir kaç çeşit kontrol vardır. Örneğin; Repeater, DataList, GridView, DetailsView, FormView bu kontrollerdir. Bu kontroller ile ASP.NET web sayfalarımızda verilerimizi gösterebiliriz. Bu yazımda ben Repeater kontrolü üzerinde duracağım. Bu saymış olduğum kontroller direkt olarak ADO.NET’in bir parçası değillerdir ancak veritabanı işlemleri için kullanıldığından dolayı bu şekilde sunulması da çok da yanlış değildir.

Repeater kontrolü Türkçe olarak tekrarlayıcı kontrolü olarak da bilinir. Biz Repeater diyeceğiz. Repeater kontrolü ASP.NET ortamında veri listeleme kontrolleri içinde en basit olanıdır. Bir veritabanından alından verileri çok kolay bir şekilde listeleme – görüntüleme işlemi yapabilir. Çok az kodla bu işlemi bize sağlayabilmektedir.

Öncelikle bir ASP.NET WEb sayfasına Repeater kontrolü nasıl eklenir buna değineyim.

İlk yöntem tabii ki sürükle bırak yöntemimiz. ToolBoxda Data kontrolleri altında Repeater kontrolünü bulabilirsiniz. Buradan sayfamıza sürüklediğimizde Repeater kontrolü sayfamıza eklenir. Daha sonra data source seçilebilir vs..

Ben işin kodsal boyutundan anlatmaya devam edeceğim :

Bir ASP.NET web sayfasına Repeater kontrolü eklemek için :

 
     
      <%# Eval("AdSoyad") %>
     
    

Görüldüğü gibi Repeater kontrolü şimdiye kadar kullanmış olduğum diğer ASP.NET kontrolünden biraz farklı gibi. Şimdi nedir bu farklılıklar iyice irdeleyelim. Öncelikle bir ana kontrolümü diğer adı ile parent tag tanımlıyorum. < asp:Repeater > şeklinde diyerek. Ancak, bu ana kontrolüm altında bir subtag ya da diğer adı ile bir childtag yer alıyor ve şu şekilde : < ItemTemplate > Ve bu childtag içinde bir takım kodlarım var, bu kodlarda ben Repeater içinde hangi veriyi göstereceksem buna dair bilgiyi barındırıyor. Ancak bu veriler gösterilmeden önce, bir SQL sorgusu sonuçları barındıran SqlDataReader nesnesi ile Repeater kontrolünü bağlamamız gerekiyor, bu işleme de data binding diyoruz. Örneğin myRepeater kontrolümü data binding yapıyorum.

myRepeater.DataSource = reader
myRepeater.DataBind()

Görüldüğü üzere binding işlemi bu kadar kolay. Repeater ile veritabanından alınan verileri bir HTML tablo içinde gösterebiliriz, her satır alınan veri satırları olarak gösterilebilir. HTML tablosu oluşturmak için bilindiği izere

 ve  ayrıca  ve 

tagleri kullanılır.

Repeater kontrolü aslında tıpkı bir WEB sayfası gibi çeşitli alanlardan oluşur, bu alanlar template yani şablon olarak bilinir. Şimdi bunlara değinelim :

< HeaderTemplate > Bu template ile Repeater alanımızda verilerimiz için bir başlık alanı açabiliriz. Örneğin HTML bir tablo üretiyorsak < table > tagi açabiliriz.

< ItemTemplate > Diğer templateler kullanımlasa da olur ancak bu template Repeater kontrolü için mutlaka kullanılmalıdır. Data Source kaynağından alınan her bir item için kullanılabilir. Örneğin bu kısımda biz bir HTML tablo oluşturuyorsak < td > ve < / td > tagleri kullanılır.

< AlternatingItemTemplate > Bu template eğer varsa ItemTemplate yerine kullanılabilir, ikinci kayıtlar için kullanılır.

< SeparatorTemplate > Bu şablon veri öğeleri arasında görünür bir biçimlendirme yapmamızı sağlar. Bu şablon ilk veri öğesinden önce ve son veri öğesinden sonra görüntülenmez.

< FooterTemplate > Bu şablon Repeater kontrolü için bir alt bilgi oluşturmamızı sağlar. Tüm veri öğelerinden sonra görüntülenir. Örneğin bir HTML tablo oluşturuyorsan sonra < / table > tagi yer alabilir.

Şimdi bir örnek yapalım, Northwnd veritabanından Employees tablosundan EmployeeID, FirstName, LastName ve Title alanlarını çekip Repeater’da HTML tablo kullanarak gösterelim.

Default.aspx sayfası :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs" Inherits="Default5" %>





    


    
Employee LastName FirstName Title
<%# Eval("EmployeeID") %> <%# Eval("LastName") %> <%# Eval("FirstName") %> <%# Eval("Title") %>

Sayfam içinde Repeater kontrolünü bir HTML tablo kullanarak oluşturdum, çekmiş olduğum veriler bu HTML tabloda gösterilecek ve her bir satır için tablo satırı otomatik oluşturalacak.

Şimdi sayfamın Page_load eventine aşağıdaki kodu yazıyorum :

default.aspx.cs sayfası :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class Default5 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //SQL connectionstring ve SQL Command ve DataReader nesnemi oluşturuyorum
        SqlConnection conn = new SqlConnection("Server=.;Database=Northwnd;Integrated Security=true");
        SqlCommand comm = new SqlCommand("SELECT EmployeeID, LastName, FirstName, Title FROM Employees",conn);
        SqlDataReader reader;

        try
        {
            //Connection açma ve DataBinding işlemim
            conn.Open();
            reader = comm.ExecuteReader();
            myRepeater.DataSource = reader;
            myRepeater.DataBind();
            reader.Close();
        }
        catch
        {
            Response.Write("Veri okuma işleminde hata meydana geldi");
        }
        finally
        {
            conn.Close();
        }        
    }
}

Bu örneklerin sonucunda Northwnd veritabanından istenilern veriler alınıp bir ASP.NET sayfasında gösterilir.

Görüldüğü gibi Repeater kontrolü ile verileri listelemek oldukça kolay.

5 yorum

  1. Peki ya repeater içindeki literal, label gibi kontrole erişip nasıl yazdırabiliriz?
    Örneğin repeater direk veritabanındaki bilgileri çeker. İçinde bir literal olsa ve işlem yaptırıp sonra repater içindeki literale nasıl yazdırabiliriz?
    Özet: Repeater içinden literal gibi kontrollere nasıl erişebiliriz?

  2. Repeater kontrolü için bu tarzda bir örnek yazım yok ama aynı dediğiniz durumla ilişkili olarak DataList kontrolü içindeki bir kontrole nasıl erişilebileceğini anlatan yazı aşağıdaki linkte..

    http://www.ismailgursoy.com.tr/datalist-kontrolu-ile-veri-guncelleme-veri-listeleme-3/

    Buradaki örnekte görüleceği üzere yine Repeater içinde bir şablon içinde yer alan bir kontrolede erişebilmek için e.Item?a ait olan FindControl metodunu kullanarak bir yazı paylaşmıştım. Burada ItemTemplate alanı içinde Literal kontrolü mevcut. Aynı metotla Repeater içindeki bir şablondaki kontrole de erişebilirsiniz.

  3. Repeater otomatik satır numarası
    Bu konuyla ilgili şu siteden yardım alabilirsiniz. Çok beğendiğim ve sürekli takip ettiğim bir sitedir.
    http://www.sonercelix.com/MakaleDetay/2057/Repeater-otomatik-satir-numarasi

  4. repeater de gelen verileri sayfalara bölebilir miyiz. mesela 15 tane kayıt gelcek ekranda 5 tanesi görünsün diğerleri sayfa1 sayfa 2 sayfa 3 diye ayrı ayrı görünsün gridview de olduğu gibi repeaterde de mümkün mü?

  5. Hocam peki bu listelediğimiz verilerin Id sini nasıl çekebiliriz. Yani yukarıdaki gibi tabloda birde Id adında sütun olsun bu sütuna’da seç ibaresi olsun seç’e tıkladığımız zaman bulunduğu satır’daki id’yi tebox’a yazdırsın gibi…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir