Merhabalar ObjectDataSource nesnesini kullanarak Gridview’da Sayfalama yapacağız. Visual Studio .Net 2005 ile birlikte bir çok yenilik gelmiştir.Bu yeniliklerin biride objectdatasource, objectdatasource nesnesi database ile sayfada verilerin listelenmesi arasında veri alışverişini sağlar.
Kısa açıklamadan sonra kodlamamıza geçebiliriz; Html kodlarımızı görelim ilk önce;
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Ürünleri Listele</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" CellPadding="4" DataSourceID="odsUrun"
ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="3" Width="382px">
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SelectedRowStyle BackColor="#f3f0f6" Font-Bold="True" ForeColor="Navy" />
<PagerStyle BackColor="#f3f0f6" ForeColor="#333333" HorizontalAlign="Center" CssClass="pager"/>
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<PagerSettings FirstPageText="First Page" LastPageText="Last Page" Mode="NextPreviousFirstLast" />
</asp:GridView>
</div>
<asp:ObjectDataSource ID="odsUrun" runat="server" SelectMethod="UrunleriGetir"
TypeName="UrunListele" EnablePaging="True" MaximumRowsParameterName="PageSize" SelectCountMethod="GetRowsCount" StartRowIndexParameterName="StartRow" >
</asp:ObjectDataSource>
</form>
</body>
</html>
Şimdi Sıra UrunListele Class’ımıza bakmaya geldi;
Imports Microsoft.VisualBasic
Imports System.Data
Public Class UrunListele
Public Sub New()
MyBase.New()
End Sub
Public Function UrunleriGetir(ByVal StartRow As Integer, ByVal PageSize As Integer) As DataView
'Bu method Urunlistesi.xml dosyasından verileri getirir.
'getdata database'den verileri okumak için eklenmelidir.
Return VeriGetir(StartRow, PageSize)
End Function
Private Function VeriGetir(ByVal StartRow As Integer, ByVal PageSize As Integer) As DataView
'bu method App_Code içindeki xml'den verileri okumak için gereklidir.
Dim Urunler As DataSet = New DataSet
Urunler.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/ProductsList.xml"))
Dim UrunTablosu As DataTable = Urunler.Tables(0)
'gelen kayıtları boş bir tablo oluşturarak bu oluşturduğumuz boş tabloda tutarız.
Dim UrunTablosuSayfalama As DataTable = UrunTablosu.Clone
'Datarow UrunlerRow
'i=NewPageIndex*PageSize gelen kayıtları yeni sayfada verir.
Dim i As Integer = StartRow
Do While ((i _
< (StartRow + PageSize)) _
AndAlso (i < UrunTablosu.Rows.Count))
'row ekle
UrunTablosuSayfalama.ImportRow(UrunTablosu.Rows(i))
i = (i + 1)
Loop
Return UrunTablosuSayfalama.DefaultView
End Function
Public Function GetRowsCount() As Integer
'bu method xml dosyası içindeki kayıtların kaç tane olduğunu getirir.
Dim Products As DataSet = New DataSet
Products.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/ProductsList.xml"))
Return Products.Tables(0).Rows.Count
End Function
End Class
Ve son olarakta Urunlistesi.xml dosyamızın içeriğine bakmaya geldi;
<?xml version="1.0" encoding="utf-8" ?>
<ProductsList>
<Urun Adi="Hard Disk" id="1"/>
<Urun Adi="CPU" id="2"/>
<Urun Adi="RAM" id="3"/>
<Urun Adi="Head Phones" id="4"/>
<Urun Adi="Mic" id="5"/>
<Urun Adi="Mouse" id="6"/>
<Urun Adi="DVD ROM" id="7"/>
<Urun Adi="Wireless Lan Card" id="8"/>
<Urun Adi="Modem" id="9"/>
<Urun Adi="3D Card" id="10"/>
<Urun Adi="Sound Blaster" id="11"/>
<Urun Adi="Speakers" id="12"/>
<Urun Adi="Keyboard" id="13"/>
<Urun Adi="Monitor" id="14"/>
<Urun Adi="IR Port" id="15"/>
<Urun Adi="USB Port" id="16"/>
<Urun Adi="Floppy Drive" id="17"/>
</ProductsList>

Bu makalemizinde sonuna gelmiş bulunmaktayız. Bir sonraki makalemizde görüşmek üzere.
Soru ve önerilerinizi mail adresime gönderebilirsiniz: mustafasaygi@yahoo.com
Hepinize kolay gelsin Hoşçakalın..