Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

CollectionPager İle Repeater veya DataList Listeleme

Genellikle Asp.NET aleminde Repeater veya DataList gibi veri listeleme kontrolleri vazgeçilmezdir.Bazen binlerce kayıtın tutulduğu listeleri DataSource’lerine atarız.Haliyle çok kullanışlı olduklarından dolayı bazı durumlarda GridView yerine bu nesneleri kullanırız.Tabi artıları olduğu kadar eksileride mevcuttur.GridView’de yapılan sayfalama işlemi ne yazık ki Repeater ve DataList nesnelerinde daha teferruatlı ve zahmetlidir.Hal böyleyken CollectionPager sınıfı yardımımıza koşmaktadır.

Öncelikle bu sınıfın .dll dosyasını buradan indiriniz.
Şimdi ise ne işe yarar, nasıl mantığı vardır ve nasıl kullanılır irdeleyelim.

CollectionPager Repeater veya DataList nesnelerinde sayfalama işlevini gören bir sınıftır.

CollectionPager’ın mantığını izah etmek gerekirse, 2 satır kodla oluşturulan bir algoritma sayesinde QueryString yardımıyla listeleme görevi görmektedir.

Bu konuyla ilgili çok gereği olmayan teorik bilgilerden sonra asıl mevzumuz nasıl kullanılacağıdır.

Ben örnek olarak Visual Studio’da boş bir Web Projesi açıyorum.Öncelikle indirdiğimiz CollectionPager.dll dosyasını Toolbox penceresinde her hangi bir taba sağ tıklayarak(ya da bir tab açarak) Choose Items sekmesini seçip açılan pencereden CollectionPager.dll dosyamızı ekliyoruz.Şimdi ise sayfamıza Repeater ve Toolbox penceresine eklediğimiz CollectionPager nesnelerinden birertane koyuyoruz.

<%@ Register Assembly="CollectionPager" Namespace="SiteUtils" TagPrefix="cc1" %>
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <%#Eval("Veri") %>
    </ItemTemplate>
</asp:Repeater>
<cc1:CollectionPager ID="CollectionPager1" PageSize="10" runat="server" BackNextLocation="Split" BackText="Geri" FirstText="İlk" LabelText="Sayfa:" LastText="Son" NextText="İleri" QueryStringKey="Sayfa" ResultsFormat="Sayfa {0}-{1} (of {2})"></cc1:CollectionPager>

Şimdi ise .cs sayfamıza gelip aşağıdaki satırları yazalım.

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            VerileriGetir();
        }
    }

    void VerileriGetir()
    {
        ...//Varsayıyorum ki VeriListesi adında bir listemiz var.
        CollectionPager1.DataSource = VeriListesi;
        CollectionPager1.BindToControl = Repeater1;
        Repeater1.DataSource = CollectionPager1.DataSourcePaged;
        ...
    }

CollectionPager1 nesnemizin PageSize özelliği 10 olduğundan dolayı, her 10 veride bir sayfalama işlemi yapılacaktır.

İyi çalışmalar

Bunlar da hoşunuza gidebilir...

6 Cevaplar

  1. Özgür dedi ki:

    hocam herşeyi denedim fakat benim sayfada cıkmıyor, ilk 5 göster diyorum cok güzel 5 gösteriyor fakat pager cıkmıyor ne önerirsin

  2. Gülin dedi ki:

    CollectionPager sayfalama yapıyorum sadece tüm verileri çektiğimde sorun yok fakat dropdownlist içinden bir veri seçip gönderdiğimde görüntüleyemiyorum CollectionPager kaybolup ekrana hiçbirşey gelmiyor

    protected void Page_Load(object sender, EventArgs e)
    {

    if (!IsPostBack)
    {
    ders();
    Sorular();

    }

    void Sorular()
    {
    var sorulist = (from v in sorubank.Tbl_Sorus
    join v1 in sorubank.Tbl_Cvps on v.Soru_ID equals v1.Soru_ID
    join v2 in sorubank.Tbl_DogruCvps on v.Soru_ID equals v2.Soru_ID
    join v3 in sorubank.Tbl_Derslers on v.Ders_ID equals v3.Ders_ID
    where v3.Ders_ID == Convert.ToInt32(DDLDers.SelectedValue)
    select new
    {
    v.Soru_ID,
    v.Soru,
    v2.DogruCvp,
    v1.CvpA,
    v1.CvpB,
    v1.CvpC,
    v1.CvpD,
    v3.Ders_Adi

    }).ToList();
    DLSoru.DataSource = sorulist;
    DLSoru.DataBind();
    ccpage.DataSource = sorulist;
    ccpage.BindToControl = DLSoru;
    DLSoru.DataSource = ccpage.DataSourcePaged;
    }
    void ders()
    {

    DDLDers.DataValueField = “Ders_ID”;
    DDLDers.DataTextField = “Ders_Adi”;

    if (Session[“Egitmen_ID”] != null)
    {
    DDLDers.DataSource = sorubank.Tbl_Derslers.Where(v => v.Egitmen_ID == Convert.ToInt32(Session[“Egitmen_ID”])).ToList();
    DDLDers.DataBind();

    }
    }
    protected void DDLDers_SelectedIndexChanged(object sender, EventArgs e)
    {
    Sorular();
    }

    sorun nerde acaba yardımcı olurmusunuz

    • Gençay dedi ki:

      Merhaba,
      DropDownList nesnesinin SelectedIndexChanged Event’ında Sorular isminde ki metodu çağırıyorsunuz.Page_Load metodu içinde de, IsPostBack kontrolü içinde gene Sorular metodunu çağırıyorsunuz.Page_Load metodundan Sorular’ı silin.Birde öyle deneyin.Eğer olumlu sonuc almazsanız, Breat Point ile programın akışını takip edin.

      Şunada dikkat etmek gerekiyor.CollectionPager nesnesinin PageSize özelliğinden az veri gösterilecekse, sayfalama yapılmayacaktır.

  3. FIRAT dedi ki:

    Hocam merhaba, CollectionPager1.DataSource = VeriListesi; kodunda VeriListesinyerine ne yazacağım?

    kodum şu şekilde:

    OleDbConnection baglantix = new OleDbConnection();
    baglantix.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + Server.MapPath(“~/App_Data/tercume.accdb”);
    baglantix.Open();
    OleDbCommand cmdListele = new OleDbCommand();
    cmdListele.Connection = baglantix;
    cmdListele.CommandText = (“Select top 20 * from TB_tercumanlar”);
    dlZiyaret.DataSource = cmdListele.ExecuteReader();
    dlZiyaret.DataBind();
    cmdListele.Dispose();

    CollectionPager1.DataSource = VeriListesi;
    CollectionPager1.BindToControl = dlZiyaret;
    dlZiyaret.DataSource = CollectionPager1.DataSourcePaged;

    baglantix.Close();

    Teşekkürler.

  4. FIRAT dedi ki:

    Hocam ben olayı çözdüm. Teşekkürler.

Bir cevap yazın

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

*