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.
Bloğuma ilk yazımımdan sonra fazla zaman geçmeden tekarar sizlerleyim. Bu yazımda BlogEngine'deki urllerde oluşan Türkçe karakterler daha doğrusu urldeki "ı" karakterinin çözüm yolundan bahsedeceğim. Diğer Türkçe karakterlerde herhangi bir sorun yok sadece küçük "ı" karakterinde sorun var. İlk yazımı yazdıımda urldeki "http://www.bilalkorkmaz.com/post/Ilk-Yazc4b1m.aspx" "ı" karakterinin yerne değişik bir karakter kümesinin çıktığını farkettim hemen BlogEnginenin kaynak kodlarını açarak incelemeye başladım ve kısa bir süre içerisinde sorunu hallettim. BloagEnginenin kaynak kodlarını açarak işlemlere başlayalım. (BloagEnginenin kaynak kodlarını indermek için buradan "BlogEngine.NET 1.6 (source)" isimli linki tıklayarak indirebilirsiniz.) Projeyi Vusial Studio ile açtıktan sonra Solution Explorer'da BlogEngine.Core katmanının altındaki "Utils.cs" Class dosyasını açalım. "Utils.cs" Class dosyasını açtıktan sonra "RemoveIllegalCharacters" methoduna "text = text.Replace("ı", "i");" kod parçaçığını ekleyip projeyi derleyelim.
Bin klasörünün altında oluşan dosyaları BlogEngine kurulu olan hostingimizdeki aynı klasöre yolladıktan sonra işimiz bitiyor. Yaptığımız bu değişiklikten sonra yazacağımız yazıların urllelerinde herhangi bir Türkçe karakter sorun olmayacatır.
Bir sonraki makalemizde görüşmek üzere.