业务逻辑层,数据分页的抽象基类设计

using System.Collections.Generic;

namespace BLL
{
    /// <summary>
    /// 数据分页的泛型基类
    /// </summary>
    /// <typeparam name="T">实体类</typeparam>
    public abstract class PageBase<T>
    {
        /// <summary>
        /// 获取或设置,当前第几页,初始页码:1
        /// </summary>
        public int PageNo { get; set; }


        /// <summary>
        /// 获取或设置,每页显示的记录条数,初始条数:10
        /// </summary>
        public int PageSize { get; set; }


        int totalItemNumber;

        /// <summary>
        /// 根据总记录条数返回总页数
        /// </summary>
        public int TotalItemNumber
        {
            get
            {
                int totalPageNumber = totalItemNumber / PageSize;

                return totalItemNumber % PageSize != 0 ? ++totalPageNumber : totalPageNumber;
            }
            set { totalItemNumber = value; }
        }

        /// <summary>
        /// 返回上一页的页码
        /// </summary>
        public int GetPrevPage()
        {
            return PageNo > 1 ? PageNo-- : PageNo;
        }

        /// <summary>
        /// 返回下一页的页码
        /// </summary>
        public int GetNextPage()
        {
            return PageNo < TotalItemNumber ? PageNo++ : PageNo;
        }

        //返回当前页List
        public abstract IList<T> ListPage();

        /// <summary>
        /// 跳转到指定页的List
        /// </summary>
        /// <param name="pageNo"></param>
        public abstract IList<T> ListPage(int pageNo);

        /// <summary>
        /// 初始页码1、每页数据条数10。实现时必须初始化总数据条数
        /// </summary>
        public PageBase()
        {
            this.PageNo = 1;
            this.PageSize = 10;
        }

        /// <summary>
        /// 初始页码1、自定义每页数据条数。实现时必须初始化总数据条数
        /// </summary>
        /// <param name="pageSize">每页数据条数</param>
        public PageBase(int pageSize)
        {
            this.PageNo = 1;
            this.PageSize = pageSize;
        }

        ///// <summary>
        ///// 特使的初始构造
        ///// </summary>
        ///// <param name="pageNo">页码</param>
        ///// <param name="pageSize">每页数据条数</param>
        ///// <param name="totalItemNumber">总数据条数</param>
        //public PageBase(int pageNo, int pageSize, int totalItemNumber)
        //{
        //    this.PageNo = pageNo;
        //    this.PageSize = pageSize;
        //    this.TotalItemNumber = totalItemNumber;
        //}
    }
}


你可能感兴趣的:(业务逻辑层,数据分页的抽象基类设计)