Asp.net ‘de datagridview kullandığımız zaman sayfalamayı .NET kendisi yapıyor ama listenizi kendiniz oluşturuyorsanız o zaman problemler çıkabiliyor.
Aşağıdaki metoda toplam sayfa sayısını,ekrandaki sayfayı ve gideceğimiz linkin ön ekini göndererek şu şekilde sayfalama oluşturabiliriz.
private static string sayfalamaYap(int ts, int es, string yol)
{//ts=toplam sayfa, es=ekrandaki sayfa, yol = link
int eis = 0;
int ess = 0;
bool i2demi = (es – 6 < 1) ? true : false; //ilk 2 sayfadan birindeysek true–not:-2 idi
bool s2demi = (ts – 6 < es) ? true : false; //son 2 sayfadan birindeysek true
bool imi = (es == 1) ? true : false; //ilk sayfa isek true
bool smu = (es == ts) ? true : false; //son sayfa isek true
string text = “<div id=\”paging\”>”;
string buton = “<a href=\”/” + yol + “{0}\” class=\”{2}\”>{1}</a>”;
if (i2demi & s2demi) { eis = 1; ess = ts; }
else if (!i2demi & s2demi) { eis = ts – 8; ess = ts; }
else if (i2demi & !s2demi) { eis = 1; ess = 8; }
else { eis = es – 4; ess = es + 4; }
if (!imi) { text += string.Format(buton, (es – 1).ToString(), “< previus”, “nav”); }
if (!i2demi) { text += string.Format(buton, “1”, “1”, “nav”) + string.Format(buton, “2”, “2”, “nav”) + ” … “; }
for (int i = eis; i <= ess; i++)
{
if (i == es) { text += “<span href=\”\” class=\”navnone\”>” + i.ToString() + “</span>”; }
else { text += string.Format(buton, i.ToString(), i.ToString(), “nav”); }
}
if (!s2demi) { text += ” … “ + string.Format(buton, (ts – 1).ToString(), (ts – 1).ToString(), “nav”) + string.Format(buton, ts.ToString(), ts.ToString(), “nav”); }
if (!smu) { text += string.Format(buton, (es + 1).ToString(), “next >”, “nav”); }
return text + “</div>”;
}