类似Baidu Google分页页码效果的代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

/// <summary>
/// Pagenumber 的摘要说明
/// </summary>
public static class Pagenumber
{
    ///   <summary>
         ///  创建并显示分页器
         ///   </summary>
    public static string BuildPager(int totalRecords, int currentPage, int pageSize, int pid)
    {
        int alter = 4;
        int startPage = 1;
        int endPage = currentPage + alter;
        int totalPages = CalculateTotalPages(totalRecords, pageSize);

        if (currentPage > alter)
        {
            startPage = currentPage - alter;
        }

        if (endPage > totalPages)
        {
            endPage = totalPages;
        }

        string strTemp = @" <a href='Default.aspx?p={0}&pno={1}'>{2}</a>&nbsp; ";
        StringBuilder sb = new StringBuilder("");
        if (currentPage != startPage)
        {
            sb.Append(string.Format(strTemp, currentPage - 1, currentPage - 1, " 上一页 "));
        }

        for (int i = startPage; i <= endPage; i++)
        {
            if (currentPage == i)
            {
                sb.Append(" <font color=red> " + i + " </font>&nbsp;&nbsp; ");
            }
            else
            {
                sb.Append(string.Format(strTemp, i, i, "[" + i + "]"));
            }
        }

        if (currentPage != endPage)
        {
            sb.Append(string.Format(strTemp, currentPage + 1, currentPage + 1, " 下一页 "));
        }

        return sb.ToString();
    }
 
          /**/ ///   <summary>
         ///  计算总页数
         ///   </summary>
         ///   <param name="totalRecords"> 总记录数 </param>
         ///   <param name="pageSize"> 每页记录数 </param>
    public static int CalculateTotalPages(int totalRecords, int pageSize)
    {
        int totalPagesAvailable;

        totalPagesAvailable = totalRecords / pageSize;

        // 由于C#的整形除法 会把所有余数舍入为0,所以需要判断是否需要加1
        if ((totalRecords % pageSize) > 0)
            totalPagesAvailable++;

        return totalPagesAvailable;
    }
}

posted @ 2008-03-28 18:49  supers  阅读(206)  评论(0)    收藏  举报