by Administrator
5. August 2010 23:34
Bazı çalışmalarımızda o kadar çok kayıtla uğraşıyoruzki kayıtları sayfalamamız gerekiyor. Repeater ya da DataList ile DataPager kontrolü kullanamadığımızdan kendimiz bir takım kod yazarak sayfalama işlemini gerçekleştiriyoruz. Bu gün pratik ve hızlı bir şekilde nasıl sayfalama yapabileceğimizi inceleyeceğiz. İlk olarak CollectionPager.dll (32,00 kb) dosyamızı indirelim. Dosyamızı indirdikten sonra Visual Studio'da Toolbox'a import edelim. Yeni bir web sitesi açalım ve Default.aspx sayfamızın üzerine bir adet Repeater kontrolü bir adetde eklediğimiz CollectionPager.dll dosyamızdan oluşan kontrolü yani CollectionPager kontrolünü ekleyeylim ve sayfamızdaki kontrollerin özelliklerini aşağıdaki gibi değiştirelim.
<asp:Repeater ID="rMakaleListe" runat="server">
<ItemTemplate>
<%# Eval("mBaslik") %><br/>
</ItemTemplate>
</asp:Repeater>
<cc1:CollectionPager ID="cpSayfala" runat="server" BackText="« Önceki" FirstText="İlk" LabelText="Sayfa :" LastText="Son" NextText ="Sonraki »" PageNumbersDisplay="Numbers" PageSize="10" SectionPadding="10" QueryStringKey="SF" ResultsLocation="None" ShowFirstLast="False" ShowLabel="True" ShowPageNumbers="True" BackNextLinkSeparator="">
</cc1:CollectionPager>
CollectionPager kontrolümüzde sayfada kaç kaydın yer alacağı vb ayarlamaları yapabiliyoruz. Projemizde App_Data klasörüne Makele.mdb (1,24 mb) veritabanımızı ekleyelim ve web.config dosyasına veritabanına bağlanabilmemiz için gereken aşağıdaki kodu ekleyeyim.
<appSettings>
<add key="ConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Makele.mdb;Persist Security Info=True"/>
</appSettings>
Defaultaspx.cs dosyamıza aşağıdaki gibi kodlarımızı yazalım.
DataTable Veri;
String Sql;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
MakaleGetir();
}
}
private string Baglanti = ConfigurationManager.AppSettings["ConnectionString"];
private DataTable VeriGetirDT(string Sql)
{
DataTable DT = new DataTable();
try
{
OleDbConnection objBag = new OleDbConnection(Baglanti);
objBag.Open();
OleDbDataAdapter DA = new OleDbDataAdapter(Sql, objBag);
DA.Fill(DT);
return DT;
objBag.Close();
DT.Dispose();
}
catch
{
return new DataTable();
}
}
protected void MakaleGetir()
{
Sql = "SELECT mID, mBaslik FROM tblMakale";
Veri = VeriGetirDT(Sql);
if (Veri.Rows.Count != 0)
{
cpSayfala.DataSource = Veri.DefaultView;
cpSayfala.BindToControl = rMakaleListe;
rMakaleListe.DataSource = cpSayfala.DataSourcePaged;
rMakaleListe.DataBind();
}
}
Burada VeriGetirDT fonksiyonu gelen sql ifadesini alır ve geriye Datatable tipinde kayıtları döndürür. MakaleGetir adı altında bir fonksiyon oluşturduk ve burada yazdığımız sql cümleciğini VeriGetirDT fonksiyonuna yolladık ve gelen değerleri CollectionPager kontrolümüzün DataSource'una bağlaladık ve Repeater kontrolümüzün DataSource'una CollectionPager kontrolümüzü bağladık. Projemizi çalıştırdığımızda ise aşağıda resimdeki gibi bir sayfayla karşılaşacağız.

Gördüğünüz gibi pratik ve hızlı bir şekilde kayıtlarımızı sayfaladık. Projenin tamamını buradan indirebilirsiniz.
Bir sonraki makalemde görüşmek üzere.