Asp.Net ve MSSQL ile yaptığınız çalışmalarınızda uzun veriler içeren uygulamalarda gelişmiş sayfalama sistemi örneğimiz.
Sitil betiklerimiz
*{margin:0px;padding:0px;border:0px;font-size:100%;font:inherit;vertical-align:baseline;border-spacing:0px;}
body{font-family:"Arial", Tahoma, Sans-Serif;font-size:12px;color:#545353;}
.kapsul{margin:40px auto 0px auto;width:600px;}
/* Tablo (Başlangıç) */
.tablo{border-left:1px solid #d1d1d1;border-top:1px solid #d1d1d1;width:599px;}
.tablo th{background-color:#F6F6F6;border-right:1px solid #d1d1d1;padding:3px 8px;}
.tablo tr:hover{background:#f2f2f2;}
.tablo td{background-color:#FEFEFE;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:3px 8px;}
.tablo td a{text-decoration:none;color:#D9290B;}
.tablo td a:hover{text-decoration:underline;}
/* Tablo (Bitiş) */
.ontedi{color:#9A0124;background:#d6d6d6;float:right;padding:0px 3px;line-height:22px;margin-top:8px;text-decoration:none;border-radius:3px 0px 0px 3px;}
/* Sayfalama (Başlangıç) */
.sayfalama_kapsul{margin:4px 0px 3px 0px;}
.sayfalama_kapsul a{display:inline-block;float:left;padding:2px 4px;margin-right:1px;font-size:11px;background:#353C44;color:#fff !important;text-decoration:none;letter-spacing:1px;border-radius:3px;}
.sayfalama_kapsul a:hover{background:#9A0124;color:#fefefe;}
.sayfalama_kapsul a.secili{background:#9A0124;color:#fefefe !important;}
/* Sayfalama (Başlangıç) */
/* Kütüphane (Başlangıç) */
.cb{clear:both;}
/* Kütüphane (Bitiş) */
Urunler.aspx dosyamızın içeriği
<div class="kapsul">
<asp:Repeater ID="rptListele" runat="server">
<HeaderTemplate>
<table class="tablo">
<thead>
<tr>
<th>ID</th>
<th>Başlık</th>
<th>Tarih</th>
<th>Durum</th>
<th>İşlem</th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("urun_ID")%></td>
<td><%#Eval("baslik")%></td>
<td><%#fnTarih(Eval("tarih").ToString(), true)%></td>
<td><%#fnOnayli_Onaysiz(Eval("durum").ToString())%></td>
<td><a href="?islem=urun_duzenle&urun_ID=<%#Eval("urun_ID")%>">Düzenle</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Literal ID="ltrSayfalama" runat="server"></asp:Literal>
<div class="cb"></div>
<a class="ontedi">www.ontedi.com</a>
</div>
Urunler.aspx.cs dosyamızın içeriği
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Data.SqlClient;
public partial class Urunler : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String strIslem = Request.QueryString["islem"];
fnUrunler();
}
public Int32 parAdet = 8;
private void fnUrunler()
{
String strSQL_Kriter = "WHERE durum = 1";
String strKelime = Request.QueryString["kelime"];
strKelime = fnTemizle(strKelime);
if (String.IsNullOrEmpty(strKelime) == false)
{
strSQL_Kriter = "WHERE urun_ID LIKE '%" + strKelime + "%' OR baslik LIKE '%" + strKelime + "%' OR ozet LIKE '%" + strKelime + "%' OR icerik LIKE '%" + strKelime + "%'";
}
Int32 intGecerli_Sayfa = 1;
String strGecerli_Sayfa = Request.QueryString["gecerli_sayfa"];
if (fnSayisal_Mi(strGecerli_Sayfa) == true)
{
intGecerli_Sayfa = Convert.ToInt32(strGecerli_Sayfa);
}
Int32 intGosterim_Adeti = parAdet;
Int32 intToplam_Kayit = fnToplam_Kayit("tblUrunler", strSQL_Kriter);
Int32 intBaslangic_Degeri = (intGecerli_Sayfa - 1) * intGosterim_Adeti;
Int32 intBitis_Degeri = intGecerli_Sayfa * intGosterim_Adeti;
ltrSayfalama.Text = fnSayfalama("?kelime=" + strKelime + "", intGecerli_Sayfa, intToplam_Kayit);
SqlConnection bag = fnMssql();
SqlCommand cmdSQL = new SqlCommand("SELECT urun_ID, baslik, tarih, durum FROM (SELECT row_number() over (order by urun_ID ASC) AS satir, * FROM tblUrunler " + strSQL_Kriter + ") AS tblTablo WHERE tblTablo.satir > " + intBaslangic_Degeri + " AND tblTablo.satir <= " + intBitis_Degeri + " order by urun_ID ASC", bag);
bag.Open();
rptListele.DataSource = cmdSQL.ExecuteReader();
rptListele.DataBind();
cmdSQL.Dispose();
bag.Close();
bag.Dispose();
}
public SqlConnection fnMssql()
{
SqlConnection bag = new SqlConnection(ConfigurationManager.ConnectionStrings["mssqlDB"].ConnectionString);
return bag;
}
public String fnTemizle(String parVeri)
{
if (String.IsNullOrEmpty(parVeri) == false)
{
parVeri = parVeri.Replace("'", "");
parVeri = parVeri.Replace(">", "");
parVeri = parVeri.Replace("<", "");
parVeri = parVeri.Replace("%", "");
parVeri = parVeri.Replace("*", "");
}
return parVeri;
}
public Boolean fnSayisal_Mi(String parVeri)
{
Boolean blnDonen_Deger = false;
if (String.IsNullOrEmpty(parVeri) == true)
{
blnDonen_Deger = false;
}
else
{
Regex desen = new Regex("^[0-9]*$");
blnDonen_Deger = desen.IsMatch(parVeri);
}
return blnDonen_Deger;
}
public String fnSayfalama(String parAdres_Satiri, Int32 parGecerli_Sayfa, Int32 parToplam_Icerik)
{
Int32 intSayfa_Alt_Siniri;
Int32 intSayfa_Ust_Siniri;
Int32 intSol_Grup_Sayisi;
Int32 intSag_Alt_Sinir;
float fltSayfa_Sayisi = (float)parToplam_Icerik / parAdet;
Int32 intSayfa_Sayisi = (Int32)parToplam_Icerik / parAdet;
String strSayfa_Sayisi = fltSayfa_Sayisi.ToString();
if (strSayfa_Sayisi.IndexOf(",", 0) > -1 || strSayfa_Sayisi.IndexOf(".", 0) > -1)
{
intSayfa_Sayisi += 1;
}
String strDonen_Deger = "<div class=\"sayfalama_kapsul\">";
if (parGecerli_Sayfa <= intSayfa_Sayisi)
{
Int32 intSayfa_Araligi = 2;
intSayfa_Alt_Siniri = parGecerli_Sayfa - intSayfa_Araligi;
intSayfa_Ust_Siniri = parGecerli_Sayfa + intSayfa_Araligi;
intSol_Grup_Sayisi = 1 + intSayfa_Araligi;
intSag_Alt_Sinir = intSayfa_Sayisi - intSayfa_Araligi;
//Adım 1
if (intSayfa_Ust_Siniri > intSayfa_Sayisi)
{
intSayfa_Alt_Siniri = intSayfa_Sayisi - (2 * intSayfa_Araligi);
intSayfa_Ust_Siniri = intSayfa_Sayisi;
}
//Adım 2
if (intSayfa_Alt_Siniri <= 0)
{
intSayfa_Alt_Siniri = 1;
intSayfa_Ust_Siniri = intSayfa_Alt_Siniri + (2 * intSayfa_Araligi);
if (intSayfa_Ust_Siniri >= intSayfa_Sayisi)
{
intSayfa_Ust_Siniri = intSayfa_Sayisi;
}
}
//Adım 3
if (intSol_Grup_Sayisi >= intSayfa_Alt_Siniri)
{
intSol_Grup_Sayisi = intSayfa_Alt_Siniri - 1;
}
//Adım 4
if (intSag_Alt_Sinir <= intSayfa_Ust_Siniri)
{
intSag_Alt_Sinir = intSayfa_Ust_Siniri + 1;
}
//Adım 5
if (parGecerli_Sayfa > 1)
{
strDonen_Deger += "<a href=\"" + parAdres_Satiri + "1\" title=\"İlk Sayfa\">[«]</a>";
Int32 intOnceki_Sayfa = parGecerli_Sayfa - 1;
strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intOnceki_Sayfa + "\" title=\"Önceki Sayfa\">[««]</a>";
}
//Adım 6
for (Int32 i = 1; i < intSol_Grup_Sayisi + 1; i++)
{
if (i == parGecerli_Sayfa)
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
}
else
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
}
}
//Adım 7
if (intSayfa_Alt_Siniri - intSol_Grup_Sayisi > 1)
{
strDonen_Deger += "<a>. . .</a>";
}
//Adım 8
for (Int32 i = intSayfa_Alt_Siniri; i < intSayfa_Ust_Siniri + 1; i++)
{
if (i == parGecerli_Sayfa)
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
}
else
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
}
}
//Adım 9
if (intSag_Alt_Sinir - intSayfa_Ust_Siniri > 1)
{
strDonen_Deger += "<a>. . .</a>";
}
//Adım 10
for (Int32 i = intSag_Alt_Sinir; i < intSayfa_Sayisi + 1; i++)
{
if (i == parGecerli_Sayfa)
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" class=\"secili\">" + i + "</a>";
}
else
{
strDonen_Deger += "<a title=\"" + i + ". Sayfa\" href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + i + "\">" + i + "</a>";
}
}
//Adım 11
if (parGecerli_Sayfa != intSayfa_Sayisi)
{
Int32 intSonraki_Sayfa = parGecerli_Sayfa += 1;
strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intSonraki_Sayfa + "\" title=\"Sonraki Sayfa\">[»]</a>";
strDonen_Deger += "<a href=\"" + parAdres_Satiri + "&gecerli_sayfa=" + intSayfa_Sayisi + "\" title=\"En Son Sayfa\">[»»]</a>";
}
}
strDonen_Deger += "</div>";
return strDonen_Deger;
}
public Int32 fnToplam_Kayit(String parTablo, String parKriter)
{
Int32 intDonen_Deger = 0;
if (String.IsNullOrEmpty(parTablo) == false)
{
if (String.IsNullOrEmpty(parKriter) == false)
{
SqlConnection bag = fnMssql();
SqlCommand cmdSQL = new SqlCommand("SELECT Count(*) AS T FROM " + parTablo + " " + parKriter + "", bag);
bag.Open();
SqlDataReader drSQL = cmdSQL.ExecuteReader();
if (drSQL.HasRows == true)
{
drSQL.Read();
{
String strToplam = drSQL["T"].ToString();
if (fnSayisal_Mi(strToplam) == true)
{
intDonen_Deger = Convert.ToInt32(strToplam);
}
}
}
else
{
intDonen_Deger = 0;
}
drSQL.Dispose();
cmdSQL.Dispose();
bag.Close();
bag.Dispose();
}
}
return intDonen_Deger;
}
public String fnTarih(String parTarih, Boolean blnSaat)
{
String strDonen_Deger = "";
try
{
String[] arrAylar = { "", "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" };
String[] arrGunler = { "Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi" };
DateTime dtmTarih = DateTime.Parse(parTarih);
String strTarih = dtmTarih.ToString("yyyy-MM-dd HH:mm");
Int32 intYil = dtmTarih.Year;
String strYil = intYil.ToString();
Int32 intAy = dtmTarih.Month;
String strAy = arrAylar[intAy];
Int32 intGun = dtmTarih.Day;
String strGun = intGun.ToString();
String strZaman = dtmTarih.ToShortTimeString();
Int32 intHaftanin_Gunu = (Int32)dtmTarih.Date.DayOfWeek;
String strGun_Adi = arrGunler[intHaftanin_Gunu];
strDonen_Deger = strGun + " " + strAy + " " + strYil + " " + strGun_Adi;
if (blnSaat == true)
{
strDonen_Deger = strDonen_Deger + ", " + strZaman;
}
}
catch
{
}
return strDonen_Deger;
}
public String fnOnayli_Onaysiz(String parVeri)
{
String strDonen_Deger = "";
if (parVeri == "True")
{
strDonen_Deger = "<span style=\"color:green;\">Onaylı</span>";
}
if (parVeri == "False")
{
strDonen_Deger = "<span style=\"color:red;\">Onaysız</span>";
}
return strDonen_Deger;
}
}
mutfakDB adlı veritabanında tblUrunler adlı tablomuzun tsql kodları
CREATE TABLE tblUrunler (
[urun_ID] int PRIMARY KEY NOT NULL IDENTITY(1,1),
[baslik] nvarchar(255),
[ozet] nvarchar(MAX),
[icerik] nvarchar(MAX),
[tarih] datetime NULL DEFAULT getdate(),
[okunma] int NULL DEFAULT 0,
[sira] int DEFAULT 0,
[durum] bit NULL DEFAULT 0
)
web.config dosyasının içeriği
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="mssqlDB" connectionString="Data Source=localhost;Initial Catalog=mutfakDB;User ID=sa;Password=1234" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>
<httpRuntime requestValidationMode="2.0"/>
</system.web>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".coffee" mimeType="coffeescript"/>
<mimeMap fileExtension=".woff" mimeType="application/x-font-woff"/>
</staticContent>
</system.webServer>
</configuration>
Projemizin görünümü