Sayfalama (Paging) ve Sıralama (Sorting)

Eyl 06, 2013
Tekrarlayıcı (Repeater) kontrolünde Sayfalama (Paging) ve Sıralama (Sorting) yapabilmek için tekrarlayıcının Veri Kaynağı(DataSource)’nın Sayfalanmış Veri Kaynağı (PagedDataSource) tipinde olması gerekir. 

Uygulama:
Aşağıda örnek, veritabanından çekilen verilerle  tekrarlayıcı kontrolünde sayfalama ve sıralama özelliklerini göstermektedir.

  1. Öncelikle tekrarlayıcının veri kaynağını eşitlemek için Sayfalanmış Veri Kaynağı tipinde PDS değişkeni tanımlanıyor.

    private PagedDataSource pds; 
    public PagedDataSource PDS      
    {
        get      
        {
             if (pds == null)      
                 pds = new PagedDataSource();
             return pds; 
        }      
    }

  2. Daha sonra tekrarlayıcıyı doldurmak için TekrarlayiciyiDoldur() metodu çalıştırılır. Bu metodun çalıştırdığı kod aşağıda gösterilmektedir.
void TekrarlayiciDoldur()
{

    dataSorgu = "Select * from OrnekVeritabani ORDER BY " + Kolon + " " + Yon;

    PDS.DataSource = GetTheData().DefaultView;

    PDS.AllowPaging = true;

    PDS.PageSize = 20;

    int sayfaId = 0;

    Int32.TryParse(Request.QueryString["id"], out sayfaId);
    PDS.CurrentPageIndex = sayfaId;

 

    rpVeri.DataSource = PDS;
    rpVeri.DataBind();

 

    List<sayfaListesi> liste = new List<sayfaListesi>();
    for (int i = PDS.CurrentPageIndex - 2; i < PDS.CurrentPageIndex + 3; i++)

    {

        if (i > 0 && i <= PDS.PageCount)

        {

            liste.Add(new sayfaListesi(i));

        }

        liste.Find(a => a.Id == sayfaId).Sec();
    }

 

    rpSayfa.DataSource = liste;
    rpSayfa.DataBind();

 

    Session["CurrentPage"] = sayfaId;

}

dataSorgu değişkenine veritabanından veri çekmek için yazılacak olan sorgu atanır. Kolon değişkenine sıralama yapmak istenen kolonun veritabanındaki adı ve Yondeğişkenine de artan veya azalan yönde sıralanacağı bilgisi verilmektedir. Sayfalanmış veri kaynağı tipinde PDS değişkeni atanıp veri kaynağı GetTheData()fonksiyonundan alınmaktadır.  PDS.AllowPaging özelliğine true değeri verilerek sayfalama özelliği açılmış olur. PDS.PageSize özelliğine her sayfada kaç kayıt gösterilmek isteniyorsa o değer atanır. sayfaId değişkenine hangi sayfada olduğu bilgisi verilmektedir. Request.QueryString["id"] koduyla adres çubuğundan id değeri alınmaktadır. rpVeri.DataSource=PDS eşitliği yapılarak tekrarlayıcının veri kaynağı sayfalanmış veri kaynağı tipindeki PDS’ye eşitlenir.

Kolon değişkeni bilgiyi aşağıdaki şekilde almaktadır.

private string kolon;
public string Kolon
{
    get
    {
        if (Request.QueryString["kolon"] == null)
            kolon = "AddressLine1";
        else
            kolon = Request.QueryString["kolon"];
        return kolon;
    }
    set { kolon = value; }
}

Yon değişkeni bigiyi aşağıdaki şekilde almaktadır.

private string yon;
public string Yon
{
    get
    {
        yon = Request.QueryString["yon"];
        return yon;
    }
    set { yon = value; }
}

GetTheData() metodu tablo verisi dönmektedir. Bu metodunun çalıştırdığı kod aşağıda gösterilmektedir.

public DataTable GetTheData()
{
    DataSet ds = new DataSet();
    SqlConnection baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
    SqlDataAdapter adaptor = new SqlDataAdapter(dataSorgu, baglanti);
    adaptor.Fill(ds, "OrnekVeritabanı");
    return ds.Tables[0];
}

Sıralama yönü VeriSirala() metoduyla belirleniyor. VeriSirala() metodunun çalıştırdığı kod aşağıda gösterilmektedir.

public string VeriSirala()
{
    if (Request.QueryString["yon"] == null || Request.QueryString["yon"] == "")
        Yon = "ASC";
    else if (Request.QueryString["yon"] == "ASC" && Request.QueryString["kolon"] == kolonKontrol)
        Yon = "DESC";
    else if (Request.QueryString["yon"] == "DESC")
        Yon = "ASC";
    else
        Yon = Request.QueryString["yon"];
    return yon;
}

kolonKontrol değişkenin burada yaptığı iş  eğer farklı bir kolona tıklanmışsa yönünü ilk olarak “ASC” (artan) şeklinde ayarlamaktır. Fakat ikinci kez aynı kolona tıklanmışsa yönü “DESC” (azalan) olarak değişmektedir.

Uygulama ilk çalıştırıldığında aşağıdaki gibi olur.

Şehir kolonuna tıklandığında şehir isimlerine göre artan şekilde sıralama yapılır.

Adres kolonuna iki kere arka arkaya tıklandığında adres isimlerine göre azalan şekilde sıralama yapılır.

Herhangi bir sayfaya tıklandığında görüntü aşağıdaki şekilde olur.