Şimdi code behind kısmını inceleyelim.
Açıklamalarımı kodların altında belirttim.
ImportsSystem.
ImportsSystem.Data 'Gerekli Ms access Bağlantısı NameSpace lerimizi import ediyoruz
ImportsSystem.Data.OleDb
ImportsSystem.Data.DataTable
PartialClass _Default
Inherits System.Web.UI.Page
Private command As OleDbCommand 'Ms Access Bağlantısı İçin Tanımlarımızı Gerçekleştiriyoruz.
Private Baglanti As OleDbConnection
Public Sayfa As PagedDataSource 'PagedDataSource (sayfalama işlemini yapacak olan) instancemizi sayfa adındaki değişken tanımlıyoruz.
Public Property SayfaNo() As Integer ' SAYFANO adında bir property tanımlıyoruz. tanımladığımız property de tıkladığımız sayfa numaralarını ViewState saklamamıza yaracak.
Get
If ViewState("SayfaNo") IsNot Nothing Then
Return Convert.ToInt32(ViewState("SayfaNo"))
Else
Return 0
End If
End Get
Set(ByVal value As Integer)
ViewState("SayfaNo") = value
End Set
End Property
Public Property SayfaSayisi() As Integer ' Lastpage Son sayfa için toplam sayfa sayısını saklayacağımız propery
Get
If ViewState("SayfaSayisi") IsNot Nothing Then
Return Convert.ToInt32(ViewState("SayfaSayisi"))
Else
Return 0
End If
End Get
Set(ByVal value As Integer)
ViewState("SayfaSayisi") = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then 'sayfamızın load event'ında postback kontrolünü yaparak yükle adındaki methodumuzu çalıştırıyoruz.
Yukle() 'yükle methodunu çalıştırıyoruz.
End If
End Sub
Private Sub Yukle()
Try
Sayfa = New PagedDataSource 'sayfa adındaki değişkenimize pageddatasource aktarıyoruz.
'pageddatasource property (özelliklerini) aşağıda inceleyeceğiz
Dim DataTable As New DataTable 'Datatable değişkenimizi tanımlıyoruz.
Baglanti = New OleDbConnection
Baglanti.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/app_data\veritabani.mdb")
'veritabanımızın yolunu connection nesnesinin ConnectionString property sine aktarıyoruz.
If Baglanti.State = ConnectionState.Closed Then Baglanti.Open() 'baglantımızın acık olup olmadığını kontrol ediyoruz.
command = New OleDbCommand
command.Connection = Baglanti
command.CommandText = "SELECT * FROM YAZILIMGUNLUGU" ' verilerimizi access veritabanındaki yazılımgunlugu tablosundan cekeceğimiz sql cümlemiz.
Dim rs As OleDbDataAdapter = New OleDbDataAdapter(command) ' adaptörümüzü tanımlıyoruz.
rs.Fill(DataTable) 'çektiğimiz verileri datatable nesnesine aktarıyoruz.
Baglanti.Close()
Sayfa.DataSource = DataTable.DefaultView 'sayfa adındaki değişkenimizin veri kaynağı olarak datatable aktarmış olduğumuz verileri gösteriyoruz.
Sayfa.AllowPaging = True 'pageddatasoruce nin allowpaging (sayfalama) özelliğini true yapıyoruz.
Sayfa.PageSize = 62 ' PageSize ile bir sayfada kac adet veri listeleyeceğimizi seçiyoruz.
SayfaSayisi = Sayfa.PageCount - 1 'en üstte tanımladığımız sayfasayisi adındaki property e toplam sayfamızı aktarıyoruz. bunu aktarmamızın sebebi son sayfayı buttonunda kullanacağımız için.
Sayfa.CurrentPageIndex = SayfaNo 'CurrentPageIndex property listeleyeceğimiz sayfayı belirtmektedir. hangi sayfayı göstereceğimizi sayfano adında tanımladığımız property nin değerinden almaktadır.
LblDurum.Text = "Sayfa " & IIf(Sayfa.CurrentPageIndex = 0, 1, Sayfa.CurrentPageIndex + 1) & " / " & Sayfa.PageCount & " -- Toplam Satir " & Sayfa.DataSourceCount + 1 & " -- Listelenen Satır Sayısı " & Sayfa.Count
'sizleri propertyleri biraz daha iyi anlamanız için lbldurum idli labelimizde toplam sayfa listelenen veri toplam veri ve buluduğumuz sayfayı göstermektedir.
'Sayfa.PageCount=Toplam sayfayı döndürmektedir.
'Sayfa.DataSourceCount=listeleyeceğimiz toplam verimizin sayısını döndürmektedir.
'Sayfa.Count=sayfada listelenen toplam veri sayısını döndürmektedir.
lnknext.Enabled = Not Sayfa.IsLastPage 'ileri buttonunun enable özelliğini Sayfa.IsLastPage yararlanarak aktif yada pasif yapmaktadır. yani eğer son sayfada isek ileri buttonunu çalışamamsı gerekmektedir.
LnkPrev.Enabled = Not Sayfa.IsFirstPage ' aynen burdada ilk sayfada isek geri buttonunu enable "Not Sayfa.IsFirstPage" özelliğini false yapacaktır.
Lnkfirst.Enabled = Not Sayfa.IsFirstPage 'yine aynen ilk ve son sayfaları için kullandığımız buttonlardada bu işlemi uyguluyoruz.
LnkLast.Enabled = Not Sayfa.IsLastPage 'yine aynen ilk ve son sayfaları için kullandığımız buttonlardada bu işlemi uyguluyoruz.
'eğer toplam sayfa 1 olursa buttonlarımız yine çalışmayacaktır. sizler isterseniz gizeleyebilirsinizde.
RpTable.DataSource = Sayfa 'sayfalama ile ilgili ayarlarımız yukarıda anlattığım gibi yaptıktan sonra verileri listeleyeceğimiz repeaterin veri kaynağı olarak pageddatasorucu gösteriyoruz yani sayfa adındaki değişkenimiz.
RpTable.DataBind() 'bind ediyoruz.
ReadSayfa() 'ReadSayfa adındakı methodumuz sayfaları gösteren 2. repeater imizi hazırlıyor.
Catch ex As Exception
Baglanti.Close()
End Try
End Sub
Private Sub ReadSayfa()
Dim dt As New DataTable() '2.repeaterimiz veri kaynağı için dt adındaki datatablemizi tanımlıyoruz.
dt.Columns.Add("PageIndex") 'kolonları tanımlıyoruz.
dt.Columns.Add("PageText")
For i As Integer = 0 To Sayfa.PageCount - 1 'toplam sayfa sayısı kadar dönüp sayfalarımızı belirleyeceğiz.
Dim dr As DataRow = dt.NewRow() 'datatable için satırımızı tanımlıyoruz.
dr(0) = i 'döngü sonucunda oluşan bilgileri kolonlara aktarıyorz.
dr(1) = i + 1
dt.Rows.Add(dr)
Next
rptPages.DataSource = dt '2. repeaterimizin veri kaynağını gösteriyoruz.
rptPages.DataBind() 've bind ediyoruz.
End Sub
Protected Sub rptPages_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptPages.ItemCommand
SayfaNo = e.CommandArgument() '2 repeaterimiz sayfaları gösterdiğimiz repeater ın itemcommand eventında buttona tıklandığında hangi
'commandargument değirine atadğımız sayfayı ViewState saklamamıza yarayan property e aktarıyoruz.
Yukle() ' ve yukle methodumuzu calıştırıyoruz.
End Sub
Protected Sub rptPages_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptPages.ItemDataBound
'2 repeaterimiz sayfaları gösterdiğimiz repeater in itemdatabound olayında bulunduğumuz sayfanın buttonun
'yakayarak tekrar tıklanmaması için disable ediyor ve fontunuda kalın yapıyoruz.
Dim lnkbtnPage As LinkButton = DirectCast(e.Item.FindControl("lnkbtnPaging"), LinkButton)
If lnkbtnPage.CommandArgument.ToString() = SayfaNo.ToString() Then
lnkbtnPage.Enabled = False
lnkbtnPage.Font.Bold = True
End If
End Sub
Protected Sub lnknext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnknext.Click
SayfaNo += 1 'ileri buttonumuza tıkladığımızda sayfayı bir arttırıyor ve methodumuzu çalıştırıyoruz.
Yukle()
End Sub
Protected Sub LnkPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LnkPrev.Click
SayfaNo -= 1 'geri buttonumuzun tıklandığında sayfayımızı bir eksiltiyoruz.
Yukle()
End Sub
Protected Sub Lnkfirst_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Lnkfirst.Click
SayfaNo = 0 'ilk sayfa buttonunu tıklandığında sayfano değişkenine 0 atıyoruz.
Yukle()
End Sub
Protected Sub LnkLast_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LnkLast.Click
SayfaNo = SayfaSayisi 'son sayfaya gidebilmek için. yukle methodu içinde toplam sayfa sayısını aktardığımız değişkenimizi sayfano ya aktarıyoruz.
Yukle()
End SubEndClass
ve sonuclarımızı görelim.

