Asp.net ile veritabanımızdan çektiğimiz veriler bazen o kadar çok olur ki bunları sayfalamak isteriz. Açıkçası bugün bunlarla uğraştım ve kendileri bayağı uğraştırdı beni. internette bulduğum kodları kendime göre düzenlerken bir sürü sorunla karşılaştım vs. Sonrasında basit bir yol buldum. Bu konuyla ilgili yazılmış 2 adet makale.

http://www.bilalkorkmaz.com/post/Repeater-ve-DataList-ile-sayfalama-islemi.aspx

http://www.sorunasp.net/asp-net-sayfalama-verileri-collectionpager-ile-sayfalama.html

Bu konuyla ilgili bir çok makale var yerlisiyle yabancısıyla ancak ben bu iki makale daha net olduğu için bunları yazıyorum ben.

Sayfalama yapmak için önce makalelerde de linki verilen collectionpager dll ‘sini indiriyoruz ve bunu projemize referans olarak ekliyoruz.
Ardından sayfalama yapacağımız sayfanın en üstüne şunu ekliyoruz :

<%@ Register assembly="CollectionPager" namespace="SiteUtils" tagprefix="cc1" %>

Bunu eklemezsek ileri ki kodlarda etiketinde “bilinmeyen etiket” şeklinde hata verecektir. O yüzden bunu eklemeyi unutmayın.

Ardından gene .aspx dosyamıza şu kodları yazıyoruz:

<asp:DataList ID=”DataList1″ runat=”server”>
<ItemTemplate>
<%#Eval(“SayfaAd_tr”) %>
</ItemTemplate>
</asp:DataList>

<cc1:CollectionPager ID=”CollectionPager1″ runat=”server” SliderSize=”1″ ShowPageNumbers=”True”
LabelText=”Sayfa” PageSize=”1″ NextText=”İleri” LastText=”Son” BackText=”Geri”
FirstText=”İlk”>
</cc1:CollectionPager>

Burada datalist ve collectionpager nesnelerimizi oluşturduk.

Eğer daha önceden sizin eklediğiniz bir datalist var ve oradan verileri çekiyor , sadece sayfalama işlemini gerçekleştirmek istiyor iseniz tekrar eklemenize gerek yok.Ancak tanımlı bir datasourceid var ise o kısmı silmeniz gerekecektir.Çünkü bir sonraki kodda da göreceğiniz gibi zaten sayfalama yaparken datasource belirtiyoruz.

Son olarak da aspx.cs dosyamıza şunları yazıyoruz :

SqlConnection con = new SqlConnection(“bir connection string tanımlıyoruz);
SqlCommand cmd = new SqlCommand(“Select * from tablomuz”, con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable(“hafizatablosu”);
dt.Load(dr);
CollectionPager1.DataSource = dt.DefaultView;
CollectionPager1.BindToControl=DataList1;
DataList1.DataSource = CollectionPager1.DataSourcePaged;
DataList1.DataBind();
con.Close();

Bir sayfada kaç veri gözükeceği , sayfa numaralarının gözüküp gözükmeyeceği vb. durumları da .aspx sayfasına yazdığımız kodlarda düzenleyerek istediğiniz şekle getirebilirsiniz. Ha bazı noktaları değiştirmek istiyorsanız ancak .dll şeklinde olduğundan yapamıyorum diyorsanız .dll dosyasının açık kaynak kodlarına codeproject ‘ten ulaşabilirsiniz.

yorum
  1. murat dedi ki:

    merhaba ben bu sayfalamayı yaptım. sayfalar 1-2-3 diye listeleniyor. 2. ve ya 3. sayfaya tıklayınca kayıtlar değişmiyor ilk kayıtlar gozukuyor hala ve sayfalarda sadece 1 gozukuyor 2-3 vs. kayboluyor

    • cagatayabay dedi ki:

      Merhabalar ,
      Yukarıdaki scriptleri aynen kullandınız mı ve nereden çektiğiniz verileri sayfalandırmak istiyorsunuz ? Daha detaylı bilgiler verebilirseniz daha net bir şekilde yardımcı olabilirim.

Yorum bırakın