Herkese selamlar ,
Yaptığımız sitelerde getirdiğimiz sonuçlar her zaman tek sayfaya sığmıyor ve biz de sonuçlarımızı sayfalama yaparak göstermek durumunda kalıyoruz.
Sayfalama olayını basitçe anlatmak gerekirse sayfamıza DataList‘i attıktan sonra ona bir datasource bağlamıyoruz, bunun yerine kod tarafında bir “PagedDataSource” oluşturuyoruz.
Sayfalamayı göstermek için Aspx sayfamıza 2 adet button (cmdPrev ,cmdNext ) ve aralarına da hangi sayfada olduğumuz bilgisini verecek olan label ekliyoruz.
Sonra PagedDataSource‘ a aşağıda yazan özelliklerimizi veriyoruz
void Doldur()
{
PagedDataSource pd = new PagedDataSource();
pd.AllowPaging = true;
pd.PageSize = 8;
pd.DataSource = DATASOURCE;
pd.CurrentPageIndex = CurrentPage;
Label1.Text = "Sayfa: " + (CurrentPage).ToString();
cmdPrev.Enabled = !pd.IsFirstPage;
cmdNext.Enabled = !pd.IsLastPage;
dataListSonuc.DataSource = null;
dataListSonuc.DataSource = pd;
dataListSonuc.DataBind();
}
-AllowPaging özelliği sayfalamaya izin vermek
-PageSize sayfada gösterilecek olan toplam veri sayısı
-Datasource verikaynağı biz generic bir liste bağladık
-CurrentPageIndex bulunduğu sayfayı veren property — birazdan yazacağız
PagedDataSource nesnemizin IsFirstPage methodu bool dödüren bir metod bu metodu cmdPrev butonumuzun Enabled’ına veriyoruz ki ilk sayfadaysak butonumuzu kapayalım.
Aynı şekilde PagedDataSource nesnemizin IsLastPage methodu bool dödüren bir metod bu metodu cmdNext butonumuzun Enabled’ına veriyoruz ki son sayfadaysak butonumuzu kapayalım.
Bunları ayarladıktan sonra DataList Kontrolün data source özelliğine Oluşturduğumuz PagedDataSource kontrolünü veriyoruz.
Bittimi?
Henüz değil.. Bir kaç basit kod daha yazmalıyız.
cmdNext ve cmdPrev butonlarına basılınca gerçekleşecek olan eylemler
protected void cmdPrev_Click(object sender, EventArgs e)
{
CurrentPage -= 1;
Doldur();
}
protected void cmdNext_Click(object sender, EventArgs e)
{
CurrentPage += 1;
Doldur();
}
Son olarak tabiki şu CurrentPage Property ‘iyazalım
public int CurrentPage
{
get
{
object o = this.ViewState["_CurrentPage"];
if (o == null)
return 0; // yoksa ilk sayfayı göster
else
return (int)o;
}
set
{
this.ViewState["_CurrentPage"] = value;
}
}
Burada Datalist Kontrolümüze PagedDataSource ‘u bağladıktan sonra bizim yazdığımız doldur metodu çalışcaktı şimdi sayfa açıldı ve metodumuz çalışmaya başladı ve biz metodda yukardaki property’i kullanmıştık
işte yukardaki kodlara bakarsak eğer ilk defa çağırılıyorsa viewstate’i oluşturup bize 0 dönecekki bu ilk sayfa ondan sonra her sayfa değiştiğinde viewstate’e bulunduğu sayfayı atacak ki sayfayı ileri geri yaptığımızda bulunduğumuz sayfayı bilelim