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 @   欧阳.NET  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2017-11-13 本人擅长Ai、Fw、Fl、Br、Ae、Pr、Id、Ps等
点击右上角即可分享
微信分享提示