using System.Collections.Generic;
using System.Linq;

namespace PageCut
{
    public class PageItemBox<T>
    {
        /// <summary>
        /// 指定对象列表和每页对象个数并创建分页对象
        /// </summary>
        /// <param name="onePageItem">每页对象个数</param>
        /// <param name="items">对象列表</param>
        public PageItemBox(int onePageItem,List<T> items)
        {
            //属性赋值
            Items =items;
            OnePageItem = onePageItem;
            //计算最大页数
            int maxPage = Items.Count() / OnePageItem;
            if (Items.Count % OnePageItem != 0)
            {
                maxPage++;
            }
            MaxPage = maxPage;

        }
        /// <summary>
        /// 对象列表
        /// </summary>
        public List<T> Items { get; }
        /// <summary>
        /// 最大页数,由自身根据对象列表和每页显示对象数自动决定
        /// </summary>
        public int MaxPage { get;  }
        /// <summary>
        /// 每页显示对象数
        /// </summary>
        public int OnePageItem { get; }

        public List<T> GetItems(int PageNo)
        {
            List<T> result = new List<T>();
            if (PageNo > MaxPage)
            {
                PageNo = MaxPage;
            }
            int startIndex = (PageNo - 1) * OnePageItem;  //分页公式,确定从哪里开始
            for (int i = startIndex; i < OnePageItem; i++)
            {
                if (i > Items.Count() - 1)  //最后一页的情况
                {
                    break;
                }
                result.Add(Items[i]);
            }
            return result;
        }
    }
}
最后修改:2020 年 06 月 14 日 02 : 27 PM
如果觉得我的文章对你有用,请随意赞赏