asp.net sayfalama

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.sayfalama.gif

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>”;

}