" Umut, hiç görmeyen birine gökkuşağını anlatmak kadar zor ve imkansız... "

Categories

-

Asp.Net Repeater ve Datalist sayfalama

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

  • 0
  • 3163
  • 0

- BUNLARIDA GÖZDEN GEÇİREBİLİRSİNİZ -

HENÜZ YORUM YAPILMAMIŞ !

Yorum yazın

HAKKIMDA

KONULARI TAKİP EDİN

SOSYAL AĞLAR

  • Mesajınızı Gonderin