Asp.net ile listeleme islemi gerçeklestirecegimiz zaman datalist ve repeater kullanmamiz gerektiginde sayfalama yapmaya ihtiyaç duyabiliriz. Bunun için hazir yapilmis olan CollectionPager dll dosyasi kullanilabilir. Fakat bazen bu dll ihtiyacimizi karsilamayabilir. Çünki hazir dll oldugu için kullanimda sikinti çikarabiliyor. Mesela bazi yazilarin çikmasini istemiyorum ama çikiyor, buda görüntüde bozukluguna sebeb olabiliyor. Bunu baska bir yolla çözmek istersek eger, datalist ve repeater;da sayfalamada kullanilan PagedDataSource yardimi ile gerçeklestirecegiz. Veritabani baglantisini yaptiktan sonra kaç içerik listelemek istiyorsak bunu belirttikten sonra pg.CurrentPageIndex ile sayfalar arasi geçis yapiyoruz.
Kodlarimiza bakacak olursak eger;
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Partial Class Default2
Inherits System.Web.UI.Page
Dim baglanti As MySqlConnection = veribaglanti.MySqlServer
Dim metotlar As New veribaglanti
Dim sorgu As New MySqlCommand
Dim adap As New MySqlDataAdapter
Dim dr As MySqlDataReader
Dim objpds As New PagedDataSource
Dim tablo As New DataTable
Shared currentposition As Integer = 0
Shared Last As Integer = 0
Shared totalrows As Integer = 0
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
baglanti.Open()
bindata()
baglanti.Close()
End Sub
Private Sub bindata()
Dim myquery As String = "select * from icerikler order by icerik_id desc"
Dim cmd As MySqlCommand = New MySqlCommand
cmd.CommandText = myquery
cmd.Connection = baglanti
Dim da As MySqlDataAdapter = New MySqlDataAdapter
da.SelectCommand = cmd
Dim ds As DataSet = New DataSet()
da.Fill(ds)
totalrows = ds.Tables(0).Rows.Count
Dim dt As DataTable = ds.Tables(0)
Dim pg As PagedDataSource = New PagedDataSource()
pg.DataSource = dt.DefaultView
pg.AllowPaging = True
pg.CurrentPageIndex = currentposition
pg.PageSize = 12
Button1.Enabled = Not pg.IsFirstPage
Button2.Enabled = Not pg.IsLastPage
Button3.Enabled = Not pg.IsFirstPage
Button4.Enabled = Not pg.IsLastPage
DataList2.DataSource = pg
DataList2.DataBind()
baglanti.Close()
If Last = 0 Then
Last = pg.PageCount
End If
Label1.Text = "Sayfa index sayisi : " & currentposition
' Bir sayfada PageSize ile 12 adet içerik bulunmasi için ayarladik, her bir index numarasinda 12 adet içerik
' karsimiza gelmektedir.currentposition degiskeni ile istedigimiz index numarali sayfaya gidiyoruz. Yani bir ilk
' basta 0 index numarasi karsimiza gelmekte ve 12 adet içerik gözükmektedir. currentposition 1 oldugunda ise
' pg.CurrentPageIndex = 1 oluyor ve 1 numarali indexse gitmekteyiz. 1 numarali indexteki içerikler karsimiza
' gelmekte.Toplam kaç index olusmussa eger, bu böyle devam ediyor. Yani ileri geri yapmamizi böyle sagliyoruz.
Label5.Text = "Toplam içerik sayisi : " & totalrows
' Toplam içerik sayimizi vermekte.
Label6.Text = "Toplam index sayisi : " & Last
' Toplam pg.CurrentPageIndex sayimizi vermekte.
End Sub
Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' Bir sonraki sayfaya ulasmak için yazilan kodlar
If (currentposition = totalrows - 1) Then
Else
currentposition = currentposition + 1
bindata()
End If
Label1.Text = currentposition
Label5.Text = totalrows
Label6.Text = Last
End Sub
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
' Önceki sayfaya ulasmak için yazilan kodlar
If (currentposition = 0) Then
Else
currentposition = currentposition - 1
bindata()
End If
Label1.Text = currentposition
Label5.Text = totalrows
Label6.Text = Last
End Sub
Protected Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
' Son sayfaya ulasmak için yazilan kodlar
currentposition = Last - 1
bindata()
Label1.Text = currentposition
Label5.Text = totalrows
Label6.Text = Last
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Ilk sayfaya ulasmak için yazilan kodlar
currentposition = 0
bindata()
Label1.Text = currentposition
Label5.Text = totalrows
Label6.Text = Last
End Sub
End Class