咨询电话:186 7916 6165 咨询电话:186 7916 6165 (微信同号)    在线QQ:181796286
NEWS BLOG ·
学无止境
关注开优网络 关注前沿
ASP.NET公共库之图片处理类ImageUtil.cs
ASP.NET公共类库之Session封装SessionAdapter.cs

ASP.NET公共类库之分页类PageListUtil.cs

发表日期:2015-09-06    文章编辑:南昌开优网络    浏览次数:3698    标签:ASP.NET应用

/**********************************************
 * 类作用:   分页类
 * 作者:开优网络 
 * http://www.kaiu.net/
 ***********************************************/
using System;
using System.Collections.Generic;
using System.Text;

namespace Svnhost.Common
{
    /// <summary>
    /// 类名:PageListUtil
    /// 功能描述:分页代码	

    /// 使用方法:
    // public string GetPageListString()
    //    {
    //        PageListUtil pagelist = new PageListUtil();
    //        pagelist.Counts = GetDoctorCounts();
    //        pagelist.pageIndex = Request.GetQueryInt("p", 1);
    //        if (pagelist.pageIndex < 1) { pagelist.pageIndex = 1; }
    //        pagelist.pageSize = 10;
    //        return pagelist.GetPageNumbers("?name=" + officename, 10);
    //    }

    public class PageListUtil
    {
        private int _pageIndex = 1;
        private int _pageSize = 10;
        private int _counts = 0;

        private int PageCount
        {
            get 
            {
                if (Counts % pageSize == 0)
                {
                   return Counts / pageSize;
                }
                else
                {
                    return (int)(Counts / pageSize) + 1;
                }
            }
        }

        public int pageIndex
        {
            get { return _pageIndex; }
            set { _pageIndex = value; }
        }

        public int pageSize
        {
            get { return _pageSize; }
            set { _pageSize = value; }
        }

        public int Counts
        {
            get { return _counts; }
            set { _counts = value; }
        }

        public string GetPageNumbers(string url)
        {
            return GetPageNumbers(url, null);
        }

        public string GetPageNumbers(string url, string pagetag)
        {
            return GetPageNumbers(url, pagetag, 0);
        }

        public string GetPageNumbers(string url, int extendPage)
        {
            return GetPageNumbers(url, null, extendPage);
        }

        public string GetPageNumbers(string url, string pagetag, int extendPage)
        {
            if (pagetag == null)
            {
                pagetag = "p";
            }
            if (extendPage == 0)
            {
                extendPage = 10;
            }
            return GetPageNumbers(_pageIndex, PageCount, url, extendPage, pagetag);
        }


        /// <summary>
        /// 获得页码显示链接
        /// </summary>
        /// <param name="curPage">当前页数</param>
        /// <param name="countPage">总页数</param>
        /// <param name="url">超级链接地址</param>
        /// <param name="extendPage">周边页码显示个数上限</param>
        /// <returns>页码html</returns>
        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage)
        {
            return GetPageNumbers(curPage, countPage, url, extendPage, "p");
        }

        /// <summary>
        /// 获得页码显示链接
        /// </summary>
        /// <param name="curPage">当前页数</param>
        /// <param name="countPage">总页数</param>
        /// <param name="url">超级链接地址</param>
        /// <param name="extendPage">周边页码显示个数上限</param>
        /// <param name="pagetag">页码标记</param>
        /// <returns>页码html</returns>
        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage, string pagetag)
        {
            return GetPageNumbers(curPage, countPage, url, extendPage, pagetag, null);

        }

        /// <summary>
        /// 获得页码显示链接
        /// </summary>
        /// <param name="curPage">当前页数</param>
        /// <param name="countPage">总页数</param>
        /// <param name="url">超级链接地址</param>
        /// <param name="extendPage">周边页码显示个数上限</param>
        /// <param name="pagetag">页码标记</param>
        /// <param name="anchor">锚点</param>
        /// <returns>页码html</returns>
        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage, string pagetag, string anchor)
        {
            return GetPageNumbers(curPage, countPage, url, extendPage, pagetag, anchor, null);
        }


        /// <summary>
        /// 获得页码显示链接
        /// </summary>
        /// <param name="curPage">当前页数</param>
        /// <param name="countPage">总页数</param>
        /// <param name="url">超级链接地址</param>
        /// <param name="extendPage">周边页码显示个数上限</param>
        /// <param name="pagetag">页码标记</param>
        /// <param name="anchor">锚点</param>
        /// <param name="classname">当前页面样式</param>
        /// <returns>页码html</returns>
        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage, string pagetag, string anchor, string classname)
        {
            if (pagetag == "")
                pagetag = "page";
            if (classname == null)
                classname = "oth";
            int startPage = 1;
            int endPage = 1;

            if (url.IndexOf("?") > -1)
            {
                url = url + "&";
            }
            else
            {
                url = url + "?";
            }
            string t1 = "<a>" + countPage + "/" + curPage + "</a><a href=\"" + url + pagetag + "=1";
            string t2 = "<a href=\"" + url + pagetag + "=" + countPage;
            if (anchor != null)
            {
                t1 += anchor;
                t2 += anchor;
            }
            t1 += "\">首页</a>";
            t2 += "\">末页</a>";

            if (countPage < 1)
                countPage = 1;
            if (extendPage < 3)
                extendPage = 2;

            if (countPage > extendPage)
            {
                if (curPage - (extendPage / 2) > 0)
                {
                    if (curPage + (extendPage / 2) < countPage)
                    {
                        startPage = curPage - (extendPage / 2);
                        endPage = startPage + extendPage - 1;
                        t1 = t1 + "<a href=\"" + url + "&" + pagetag + "=" + (curPage - extendPage) + "\">...</a>";
                        t2 = "<a href=\"" + url + pagetag + "=" + (curPage + extendPage) + "\">...</a>" + t2;
                    }
                    else
                    {
                        endPage = countPage;
                        startPage = endPage - extendPage + 1;
                        t1 = t1 + "<a href=\"" + url + pagetag + "=" + (curPage - extendPage) + "\">...</a>";
                        t2 = "";
                    }
                }
                else
                {
                    endPage = extendPage;
                    t1 = "<a>" + countPage + "/" + curPage + "</a>";
                    t2 = "<a href=\"" + url + pagetag + "=" + (curPage + extendPage) + "\">...</a>" + t2;
                }
            }
            else
            {
                startPage = 1;
                endPage = countPage;
                t1 = "<a>" + countPage + "/" + curPage + "</a>";
                t2 = "";
            }

            StringBuilder s = new StringBuilder("");

            s.Append(t1);
            for (int i = startPage; i <= endPage; i++)
            {

                if (i == curPage)
                {
                    s.Append("<a class=\"" + classname + "\" href=\"");
                }
                else
                {
                    s.Append("<a href=\"");
                }
                s.Append(url);
                s.Append(pagetag);
                s.Append("=");
                s.Append(i);
                if (anchor != null)
                {
                    s.Append(anchor);
                }
                s.Append("\">");
                s.Append(i);
                s.Append("</a>");
            }
            s.Append(t2);

            return s.ToString();
        }
    }
}