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