Pagination

using System.Collections.Generic;

namespace Oyang.Tool
{
    public interface IPagination
    {
        int PageIndex { get; set; }
        int PageSize { get; set; }
        int TotalCount { get; set; }
        string SortField { get; set; }
        bool IsAsc { get; set; }
    }

    public interface IFullPagination : IPagination
    {
        int PageCount { get; }
        int ButtonCount { get; set; }
        List<int> ListPageButton { get; }
        List<int> CalcPageButton();
    }

    public class Pagination : IPagination
    {
        public int PageIndex { get; set; }
        public int PageSize { get; set; }
        public int TotalCount { get; set; }
        public string SortField { get; set; }
        public bool IsAsc { get; set; }
    }

    public class FullPagination : Pagination, IFullPagination
    {
        public int PageCount
        {
            get { return TotalCount % PageSize == 0 ? TotalCount / PageSize : TotalCount / PageSize + 1; }
        }
        public int ButtonCount { get; set; } = 5;

        List<int> _listPageButton = null;
        public List<int> ListPageButton { get; }

        public List<int> CalcPageButton()
        {
            _listPageButton = new List<int>();
            int temp1 = (ButtonCount - 1) / 2;
            int temp2 = ButtonCount - 1 - temp1;
            int startPageIndex = 1;
            int endPageIndex = 1;
            if (PageCount <= ButtonCount)
            {
                startPageIndex = 1;
                endPageIndex = PageCount;
            }
            else if (PageIndex <= temp1)
            {
                startPageIndex = 1;
                endPageIndex = startPageIndex + ButtonCount - 1;
            }
            else if (PageIndex + temp2 > PageCount)
            {
                endPageIndex = PageCount;
                startPageIndex = endPageIndex - ButtonCount + 1;
            }
            else
            {
                startPageIndex = PageIndex - temp1;
                endPageIndex = PageIndex + temp2;
            }

            for (int i = startPageIndex; i <= endPageIndex; i++)
            {
                _listPageButton.Add(i);
            }
            return _listPageButton;
        }
    }

}

 

posted @ 2018-11-13 14:57  欧阳.NET  阅读(309)  评论(0编辑  收藏  举报