.Net通用分页(可以选择页码的显示样式,且有中英选择)



using System;

using System.Data;

using System.Configuration;

using System.Collections;

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;



/**//// <summary>

/// 启程 通用分页类 www.letwego.cn

/// </summary>

public class Pageing

{

    成员#region 成员



    /**//// <summary>

    /// 数据源 Table

    /// </summary>

    public DataTable dtblTableww = new DataTable();



    /**//// <summary>

    /// 每页记录数

    /// </summary>

    public int intPageSizeww = 20;



    /**//// <summary>

    /// 需要获取第几页的数据,从 1 开始

    /// </summary>

    public int intPageNowww = 1;



    /**//// <summary>

    /// 首页 显示样式

    /// </summary>

    public string strFirstww = "";



    /**//// <summary>

    /// 上一页 显示样式

    /// </summary>

    public string strPrevww = "";



    /**//// <summary>

    /// 下一页 显示样式

    /// </summary>

    public string strNextww = "";



    /**//// <summary>

    /// 尾页 显示样式

    /// </summary>

    public string strLastww = "";



    /**//// <summary>

    /// 跳转 的url链接

    /// </summary>

    public string strTurnUrlww = "";



    /**//// <summary>

    /// 跳转的url链接的参数前面不要加?或&

    /// </summary>

    public string strOptionww = "";





    private string strCountww = "";  //共N条信息

    private string strPageww = "";    //第N页/共N页   

    private string strTurnww;  //跳转控件



    #endregion



    属性#region 属性



    private int intRsCounww = 0;    //记录总数



    /**//// <summary>

    /// 总记录数

    /// </summary>

    public int GetRsCount

    {

        get

        {

            return this.intRsCounww;

        }

    }



    private int intPageCountww = 0; //总页数



    /**//// <summary>

    /// 总页数

    /// </summary>

    public int GetPageCount

    {

        get

        {

            return this.intPageCountww;

        }

    }



    private string strPageShowww = ""; //显示页码的字符串

    /**//// <summary>

    /// 显示页码的字符串

    /// </summary>

    public string GetPageShow

    {

        get

        {

            return this.strPageShowww;

        }

    }



    #endregion



    初始构造#region 初始构造

    /**//// <summary>

    /// 初始构造

    /// </summary>

    public Pageing()

    {

        //首页

        strFirstww = "";

        //上一页             

        strPrevww = "";

        //下一页             

        strNextww = "";

        //尾页             

        strLastww = "";

        //跳转控件                 

        strTurnww = "";

        //显示页码的字符串

        strPageShowww = "";

        //当前页

        intPageNowww = GetNumeric(GetRequest("Page"));



        if (intPageNowww == 0)

        {

            intPageNowww = 1;

        }

    }

    #endregion



    处理分页及显示页码#region 处理分页及显示页码

    /**//// <summary>

    /// 分页,返回分页后的数据 Table

    /// </summary>

    /// <param name="bolCount">是否显示 共N条信息</param>

    /// <param name="bolPage">是否显示 第N页/共N页</param>

    /// <param name="bolFirst">是否显示 首页</param>

    /// <param name="bolLast">是否显示 尾页</param>

    /// <param name="bolTurn">是否显示 跳转控件</param>

    /// <param name="IsEnglish">是否 用中文显示</param>

    /// <returns>返回分页后的数据 Table</returns>

    public DataTable BeginPage(bool bolCount, bool bolPage, bool bolFirst, bool bolLast, bool bolTurn, bool IsChinese)

    {



        //记录总数

        intRsCounww = dtblTableww.Rows.Count;



        //总页数

        intPageCountww = (intRsCounww + intPageSizeww - 1) / intPageSizeww;



        //超出最大页码

        if (intPageNowww > intPageCountww)

        {

            intPageNowww = intPageCountww;

        }



        //中文分页

        if (IsChinese)

        {

            //跳转

            strTurnww = "<input value='" + intPageNowww.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:25px;
'><input name='btnGo' type='button' id='btnGo' value='跳转
' onclick=\"javascript:window.location.href='" + strTurnUrlww + "?page=' + document.getElementById('txtPageGo').value + '" + "&" + strOptionww + "'\">";

            //共N条信息

            strCountww = "共" + intRsCounww.ToString() + "条信息";

            //第N页/共N页

            strPageww = "第" + intPageNowww.ToString() + "页/共" + intPageCountww.ToString() + "页";



            if (strFirstww == "")

            {

                strFirstww = "首页";

                strPrevww = "上一页";

                strNextww = "下一页";

                strLastww = "尾页";

            }

        }

        else//英文文分页

        {

            //跳转

            strTurnww = "<input value='" + intPageNowww.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:25px;'><input name='btnGo' type='button' id='btnGo' value='Goto' onclick=\"javascript:window.location.href='" + strTurnUrlww + "?page=' + document.getElementById('txtPageGo').value + '" + "&" + strOptionww + "'\">";

            //共N条信息

            strCountww = "Total " + intRsCounww.ToString() + " Infos";

            //第N页/共N页

            strPageww = " " + intPageNowww.ToString() + "/" + intPageCountww.ToString() + " ";



            if (strFirstww == "")

            {

                strFirstww = " First ";

                strPrevww = " Previous ";

                strNextww = " Next ";

                strLastww = " Last ";

            }

        }





        DataTable MyTable;



        int intGetFirstRs = 0;//获取本页数据的开始下标

        int intGetLastRs = 0;//获取本页数据的结束下标



        string strFirstww2;

        string strPrevww2;

        string strNextww2;

        string strLastww2;





        //没有记录

        if (intRsCounww <= 0)

        {

            strPageShowww = strCountww;

            MyTable = dtblTableww;

        }

        //有记录

        else

        {

            //只有一页

            if (intPageCountww <= 1)

            {

                strPageShowww = strCountww + "  " + strPageww;

                MyTable = dtblTableww;

            }

            //不止一页

            else

            {

                //第一页

                if (intPageNowww == 1)

                {

                    strFirstww2 = strFirstww;

                    strPrevww2 = strPrevww;

                }

                else

                {

                    strFirstww2 = "<a href=\"" + strTurnUrlww + "?page=1" + "&" + strOptionww + "\">" + strFirstww + "</a>";

                    strPrevww2 = "<a href=\"" + strTurnUrlww + "?page=" + Convert.ToString(intPageNowww - 1) + "&" + strOptionww + "\">" + strPrevww + "</a>";

                }



                //最后一页

                if (intPageNowww == intPageCountww)

                {

                    strNextww2 = strNextww;

                    strLastww2 = strLastww;

                }

                else

                {

                    strNextww2 = "<a href=\"" + strTurnUrlww + "?page=" + Convert.ToString(intPageNowww + 1) + "&" + strOptionww + "\">" + strNextww + "</a>";

                    strLastww2 = "<a href=\"" + strTurnUrlww + "?page=" + intPageCountww + "&" + strOptionww + "\">" + strLastww + "</a>";

                }



                //----处理显示页码-----------

                if (bolCount == true)//共N条信息

                {

                    strPageShowww = strPageShowww + "  " + strCountww;

                }

                if (bolPage == true)//第N页/共N页

                {

                    strPageShowww = strPageShowww + "  " + strPageww;

                }

                if (bolFirst == true) //首页

                {

                    strPageShowww = strPageShowww + "  " + strFirstww2;

                }

                strPageShowww = strPageShowww + "  " + strPrevww2;//上一页

                strPageShowww = strPageShowww + "  " + strNextww2;//下一页

                if (bolLast == true)//尾页

                {

                    strPageShowww = strPageShowww + "  " + strLastww2;

                }

                if (bolTurn == true)//跳转控件

                {

                    strPageShowww = strPageShowww + "  " + strTurnww;

                }





                //----处理返回数据-----------

                intGetFirstRs = (intPageNowww - 1) * intPageSizeww;

                intGetLastRs = intPageNowww * intPageSizeww - 1;



                //获取结束数据下标大于总记录数时

                if (intGetLastRs >= intRsCounww)

                {

                    intGetLastRs = intRsCounww - 1;

                }



                //循环获取数据

                MyTable = dtblTableww.Clone();

                for (int I = intGetFirstRs; I <= intGetLastRs; I++)

                {

                    DataRow MyRow = dtblTableww.Rows[I];

                    MyTable.ImportRow(MyRow);

                }

            }

        }

        return MyTable;

    }

    #endregion





    将字符串转换成整数#region 将字符串转换成整数

    /**//// <summary>

    /// 将字符串转换成整数

    /// </summary>

    /// <param name="strValue">将字符传转换成整数</param>

    /// <returns>int</returns>

    private int GetNumeric(string strValue)

    {



        int IReturn;



        if (strValue == null)

        {

            IReturn = 0;

            return IReturn;

        }

        try

        {

            IReturn = Convert.ToInt32(strValue);

        }

        catch

        {

            IReturn = 0;

        }

        return IReturn;

    }

    #endregion



    获取Request值#region 获取Request值

    /**//// <summary>

    /// 获取Request值

    /// </summary>

    /// <param name="strRequestName">Request名称</param>

    /// <returns>null则为空</returns>

    private string GetRequest(string strRequestName)

    {



        if (HttpContext.Current.Request["" + strRequestName + ""] != null)

        {

            return HttpContext.Current.Request["" + strRequestName + ""];

        }

        else

        {

            return "";

        }

    }

    #endregion





    --------------------------------调用实例--------------------------#region --------------------------------调用实例--------------------------

    /**////// <summary>

    ///// 调用实例

    ///// </summary>

    //protected void BindData()

    //{

    //    Student MyStudent = new Student();



    //    DataTable MyDataTable = MyStudent.GetList("LIST", null);



    //    Pageing MyPageing = new Pageing();

    //    MyPageing.dtblTableww = MyDataTable;//数据源

    //    MyPageing.intPageSizeww = 4;//每页显示多少条

    //    MyPageing.strTurnUrlww = "MyRepeater.aspx";//跳转页面

    //    MyPageing.strOptionww = "DoWhat=List";//跳转页面带的所有参数



    //    //获取当前页数据

    //    this.DataList1.DataSource = MyPageing.BeginPage(true, true, true, true, true, false);

    //    //获取当前页分页显示

    //    this.Label1.Text = MyPageing.GetPageShow;



    //    this.DataList1.DataBind();

    //}

    #endregion



    简要说明#region 简要说明

    //.Net通用分页(可以选择页码的显示样式,且有中英选择),自己写的,还不完善,请朋友们多多指点.

    //大概思路是:根据传进来的DataTable,每页显示多少条记录,当前要显示第几页(从Request中获得),

    //来获取当前页要显示的数据(比如DataTable共有123条记录,每页显示10条,第2页,则取DataTable的Rows10~19),

    //再根据其它传进来的参数设置分页及显示的样式等.

    //当然,可能这种方法的效率等某些方面可能不好,只是个例子,可以根据自己的应用修改.

    //效果图:http://www.cnblogs.com/images/cnblogs_com/84ww/128905/r_page.GIF

    #endregion





}


原文出处:http://www.cnblogs.com/84ww