Asp.net分页辅助方法

作者:翅膀的初衷 来源:本站原创 发布时间:2014-05-19 查看数:62128

分页是Web中最常用的功能之一,一般有数据分页与内容分页二种!

数据分页是指数据行数太多,一个页面显示不下时,进行多个页面显示,是最常见的一种形式,同时也避免一次性大量加载数据给服务器带来无法承受的负荷。

而内容分页一般数据都保存一某一行数据的某一例中,不存在数据库优化方面的处理。内容分页仅仅是出于用户体优化(内容太长等)及运营方面(增加PV,增加页面广告的展示量等)的考虑进行的处理。

本文讨论的是第一种情形!内容式分页将在我们下一篇文章进行讨论,欢迎大家关注!

首先我们先在数据库中进行分页处理,关于常用的数据库分页方式,大家可查看:http://www.jiniannet.com/Article/I11404104607998

后端进行分页处理后,我们前端还需要进行分页显示处理,比如下一页,下一页,第一页,最后一页等内容,而这些处理,我们可以自定义我循环:

using System;
using System.Collections.Generic;
using System.Text;

namespace JinianNet.Web
{
    public class PageLinker
    {
        public static string GetActionLinker(string HomePagerURL, string PagerPreURL, string PagerNextURL)
        {
            return GetActionLinker(HomePagerURL, PagerPreURL, PagerNextURL, "<<", " < ", " > ");
        }
        public static string GetActionLinker(string HomePagerURL, string PagerPreURL, string PagerNextURL, string PagerFirstName, string PagerPreName, string PagerNextName)
        {
            System.Text.StringBuilder Result = new System.Text.StringBuilder();
            if (string.IsNullOrEmpty(HomePagerURL))
            {
                Result.Append("<span>");
                Result.Append(PagerFirstName);
                Result.Append("</span>");
            }
            else
            {
                Result.Append("<a href=\"");
                Result.Append(HomePagerURL);
                Result.Append("\">");
                Result.Append(PagerFirstName);
                Result.Append("</a>");

            }

            if (string.IsNullOrEmpty(PagerPreURL))
            {
                Result.Append("<span>");
                Result.Append(PagerPreName);
                Result.Append("</span>");
            }
            else
            {
                Result.Append("<a href=\"");
                Result.Append(PagerPreURL);
                Result.Append("\">");
                Result.Append(PagerPreName);
                Result.Append("</a>");
            }


            if (string.IsNullOrEmpty(PagerNextURL))
            {
                Result.Append("<span>");
                Result.Append(PagerNextName);
                Result.Append("</span>");
            }
            else
            {
                Result.Append("<a href=\"");
                Result.Append(PagerNextURL);
                Result.Append("\">");
                Result.Append(PagerNextName);
                Result.Append("</a>");
            }

            return Result.ToString();

        }
        /// <summary>
        /// 通用方法分页
        /// </summary>
        /// <param name="HomePagerURL">首页URL可选 例:List.aspx</param>
        /// <param name="PagerURL">URL,必填,格式如:List.aspx?Page={0}</param>
        /// <param name="PagerCur">当前页</param>
        /// <param name="PagerFirstName">第一页名称</param>
        /// <param name="PagerPreName">上一页名称</param>
        /// <param name="PagerNextName">下一页名称</param>
        /// <returns></returns>
        public static string GetPageLinker(string HomePagerURL, string PagerURL, int PagerCur, string PagerFirstName, string PagerPreName, string PagerNextName, bool IsLast)
        {

            System.Text.StringBuilder Result = new System.Text.StringBuilder();

            if (PagerCur < 1)
            {
                PagerCur = 1;
            }


            if (PagerCur == 1)
            {
                Result.Append("<span>");
                Result.Append(PagerFirstName);
                Result.Append("</span> <span>");
                Result.Append(PagerPreName);
                Result.Append("</span>");
            }
            else
            {
                if (string.IsNullOrEmpty(HomePagerURL))
                {
                    Result.Append("<a href=\"");
                    Result.AppendFormat(PagerURL, "1");
                    Result.AppendFormat("\">{0}</a>", PagerFirstName);
                }
                else
                {
                    Result.AppendFormat("<a href=\"{0}\">{1}</a>", HomePagerURL, PagerFirstName);
                }
                Result.Append(" <a href=\"");
                Result.AppendFormat(PagerURL, PagerCur - 1);
                Result.AppendFormat("\">{0}</a>", PagerPreName);

            }

            Result.Append(" <a href=\"");
            Result.AppendFormat(PagerURL, PagerCur + 1);
            Result.AppendFormat("\">{0}</a>", PagerNextName);

            return Result.ToString();

        }

        /// <summary>
        /// 通用方法分页
        /// </summary>
        /// <param name="HomePagerURL">首页URL可选 例:List.aspx</param>
        /// <param name="PagerURL">URL,必填,格式如:List.aspx?Page={0}</param>
        /// <param name="PagerStep">步长</param>
        /// <param name="PagerCur">当前页</param>
        /// <param name="PagerTotal">总记录条数</param>
        /// <param name="PagerSize">每页显示的数量</param>
        /// <param name="PagerFirstName">第一页名称</param>
        /// <param name="PagerPreName">上一页名称</param>
        /// <param name="PagerNextName">下一页名称</param>
        /// <param name="PagerLastName">最后一页名称</param>
        /// <returns></returns>
        public static string GetPageLinker(string HomePagerURL, string PagerURL, int PagerStep, int PagerCur, int PagerTotal, int PagerSize, string PagerFirstName, string PagerPreName, string PagerNextName, string PagerLastName)
        {
            int MiddleNumber;
            int TotalPage;
            int i;
            System.Text.StringBuilder Result = new System.Text.StringBuilder();

            MiddleNumber = (int)Math.Round((double)(PagerStep / 2), 0);
            if ((PagerTotal % PagerSize) != 0)
            {
                TotalPage = (int)Math.Round((double)(PagerTotal / PagerSize), 0) + 1;
            }
            else
            {
                TotalPage = (int)Math.Round((double)(PagerTotal / PagerSize), 0);
            }
            if (PagerCur > TotalPage)
            {
                PagerCur = TotalPage;
            }
            if (PagerCur < 1)
            {
                PagerCur = 1;
            }


            if (PagerCur == 1)
            {
                Result.Append("<span>");
                Result.Append(PagerFirstName);
                Result.Append("</span> <span>");
                Result.Append(PagerPreName);
                Result.Append("</span>");
            }
            else
            {
                if (string.IsNullOrEmpty(HomePagerURL))
                {
                    Result.Append("<a href=\"");
                    Result.AppendFormat(PagerURL, "1");
                    Result.AppendFormat("\">{0}</a>", PagerFirstName);
                }
                else
                {
                    Result.AppendFormat("<a href=\"{0}\">{1}</a>", HomePagerURL, PagerFirstName);
                }
                Result.Append(" <a href=\"");
                Result.AppendFormat(PagerURL, PagerCur - 1);
                Result.AppendFormat("\">{0}</a>", PagerPreName);

            }

            if (TotalPage <= PagerStep)
            {
                for (i = 1; i <= TotalPage; i++)
                {
                    if (i == PagerCur)
                    {
                        Result.AppendFormat(" <span>{0}</span>", i);
                    }
                    else
                    {
                        Result.Append(" <a href=\"");
                        Result.AppendFormat(PagerURL, i);
                        Result.AppendFormat("\">{0}</a>", i);
                    }
                }
            }
            else
            {
                if (PagerCur <= MiddleNumber)
                {
                    for (i = 1; i <= PagerCur; i++)
                    {
                        if (i == PagerCur)
                        {
                            Result.AppendFormat(" <span>{0}</span>", i);
                        }
                        else
                        {
                            Result.Append(" <a href=\"");
                            Result.AppendFormat(PagerURL, i);
                            Result.AppendFormat("\">{0}</a>", i);
                        }
                    }
                    for (i = PagerCur + 1; i <= PagerStep; i++)
                    {
                        Result.Append(" <a href=\"");
                        Result.AppendFormat(PagerURL, i);
                        Result.AppendFormat("\">{0}</a>", i);
                    }
                }
                else
                {
                    for (i = (PagerCur - MiddleNumber + 1); i <= PagerCur; i++)
                    {
                        if (i == PagerCur)
                        {
                            Result.AppendFormat(" <span>{0}</span>", i);
                        }
                        else
                        {
                            Result.Append(" <a href=\"");
                            Result.AppendFormat(PagerURL, i);
                            Result.AppendFormat("\">{0}</a>", i);
                        }
                    }
                    if ((PagerCur + MiddleNumber - PagerStep) < TotalPage)
                    {
                        for (i = PagerCur + 1; i <= PagerCur + PagerStep - MiddleNumber; i++)
                        {
                            if (i <= TotalPage)
                            {
                                Result.Append(" <a href=\"");
                                Result.AppendFormat(PagerURL, i);
                                Result.AppendFormat("\">{0}</a>", i);
                            }

                        }
                    }
                    else
                    {
                        for (i = PagerCur + 1; i <= TotalPage; i++)
                        {
                            if (i <= TotalPage)
                            {
                                Result.Append(" <a href=\"");
                                Result.AppendFormat(PagerURL, i);
                                Result.AppendFormat("\">{0}</a>", i);
                            }
                        }
                    }
                }
            }
            if (PagerCur == TotalPage || TotalPage == 0)
            {
                Result.AppendFormat(" <span>{0}</span> <span>{1}</span>", PagerNextName, PagerLastName);
            }
            else
            {
                Result.Append(" <a href=\"");
                Result.AppendFormat(PagerURL, PagerCur + 1);
                Result.AppendFormat("\">{0}</a>", PagerNextName);
                Result.Append(" <a href=\"");
                Result.AppendFormat(PagerURL, TotalPage);
                Result.AppendFormat("\">{0}</a>", PagerLastName);
            }


            return Result.ToString();

        }
    }
}