zoukankan      html  css  js  c++  java
  • 自定义分页控件PageList

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Commons
    {
        public class PageList<T> : IEnumerable<T>
        {
            private int pageIndex;
            private int pageSize;
            private int totalPage;
            private int totalCount;
    
            private IList<T> list;
    
            /// <summary>
            /// 单页数据,总条数,计算出总页数,然后封装成分页对象
            /// </summary>
            /// <param name="list"></param>
            /// <param name="pageIndex"></param>
            /// <param name="pageSize"></param>
            /// <param name="totalCount"></param>
            public PageList(IList<T> list, int pageIndex, int pageSize, int totalCount)
            {
                if (list != null)
                {
                    this.pageIndex = pageIndex;
                    this.pageSize = pageSize;
                    this.totalCount = totalCount;
                    this.totalPage = totalCount / pageSize;
                    if (totalCount % pageSize > 0) this.totalPage += 1;
    
                    this.list = list;
                }
                else
                {
                    this.list = new List<T>();
                }
            }
            /// <summary>
            /// 全部数据,筛选出当页数据且计算出总条数和总页数,然后封装成分页对象
            /// </summary>
            /// <param name="list"></param>
            /// <param name="pageIndex"></param>
            /// <param name="pageSize"></param>
            public PageList(IList<T> list, int pageIndex, int pageSize)
            {
                if (list != null)
                {
                    this.pageIndex = pageIndex;
                    this.pageSize = pageSize;
                    this.totalCount = list.Count;
                    this.totalPage = list.Count / pageSize;
                    if (list.Count % pageSize > 0) this.totalPage += 1;
    
                    this.list = list.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();
                }
                else
                {
                    this.list = new List<T>();
                }
            }
            public int PageIndex { get { return this.pageIndex; } }
            public int PageSize { get { return this.pageSize; } }
            public int TotalPage { get { return this.totalPage; } }
            public int TotalCount { get { return this.totalCount; } }
    
            public IEnumerator<T> GetEnumerator()
            {
                foreach (var item in this.list)
                {
                    yield return item;
                }
            }
    
            IEnumerator IEnumerable.GetEnumerator()
            {
                throw new NotImplementedException();
            }
    
            public IHtmlString PageBar(string url, object property)
            {
                if (string.IsNullOrEmpty(url)) url = string.Empty;
                else
                {
                    url = url.Trim().TrimEnd('?', '&');
                    if (url.Contains("?")) url += "&";
                    else url += "?";
                }
                string html = "<ul class="pagination">{0}</ul>";
                int pageMin = 1, pageMax = this.TotalPage;
                string page = string.Empty;
                for (int i = this.PageIndex - 1; (i > (this.PageIndex - 5)) && i > 0; i--)
                {
                    string pageUrl = string.Format("{0}pageIndex={1}", url, i);
                    page = "<li><a href="" + pageUrl + "">" + i + "</a></li>" + page;
                    pageMin = i;
                }
                page = page + "<li class="active"><a href="#">" + this.pageIndex + "</a></li>";
                for (int i = this.PageIndex + 1; (i < (this.PageIndex + 5)) && i < this.TotalPage + 1; i++)
                {
                    string pageUrl = string.Format("{0}pageIndex={1}", url, i);
                    page = page + "<li><a href="" + pageUrl + "">" + i + "</a></li>";
                    pageMax = i;
                }
                //第一页和最后一页
                if (pageMin > 1)
                {
                    if ((pageMin - 1) > 1)
                        page = "<li><a>...</a></li>" + page;
                    string pageUrl = string.Format("{0}pageIndex={1}", url, 1);
                    page = "<li><a href="" + pageUrl + "">" + 1 + "</a></li>" + page;
                }
                if (pageMax < this.TotalPage)
                {
                    if ((this.TotalPage - pageMax) > 1)
                        page = page + "<li><a>...</a></li>";
                    string pageUrl = string.Format("{0}pageIndex={1}", url, this.TotalPage);
                    page = page + "<li><a href="" + pageUrl + "">" + this.TotalPage + "</a></li>";
                }
                //上一页和下一页
                if (this.pageIndex == 1)
                    page = "<li class="prev disabled"><a href="#"><span class="fa fa-angle-left"></span>&nbsp;上一页</a></li>" + page;
                else
                    page = "<li class="prev"><a href="" + string.Format("{0}pageIndex={1}", url, this.pageIndex - 1) + ""><span class="fa fa-angle-left"></span>&nbsp;上一页</a></li>" + page;
                if (this.pageIndex == this.TotalPage)
                    page = page + "<li class="next disabled"><a href="#">下一页&nbsp;<span class="fa fa-angle-right"></span></a></li>";
                else
                    page = page + "<li class="next"><a href="" + string.Format("{0}pageIndex={1}", url, this.pageIndex + 1) + "">下一页&nbsp;<span class="fa fa-angle-right"></span></a></li>";
                html = string.Format(html, page);
                return new HtmlString(html);
            }
        }
    }
  • 相关阅读:
    推荐系统(Recommender System)
    Mac OS X安装OpenGL
    KMeans实现
    Principal Component Analysis(PCA)
    ReactiveX 学习笔记(15)使用 Rx.NET + Json.NET 调用 REST API
    ReactiveX 学习笔记(14)使用 RxJava2 + Retrofit2 调用 REST API
    Haskell语言学习笔记(91)Comprehension Extensions
    Go语言学习笔记(2)
    Go语言学习笔记(1)
    Rust语言学习笔记(6)
  • 原文地址:https://www.cnblogs.com/dongh/p/6625047.html
Copyright © 2011-2022 走看看