自定义分页控件PageList

摘要:
=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=newList();}}publicintPageIndex{get{returnthis.pageIndex;}}publicintPageSize{get{returnthis.pageSize;}}publicintTotalPage{get{returnthis.totalPage;}}publicintTotalCount{get{returnthis.totalCount;}}publicIEnumeratorGetEnumerator(){foreach(variteminthis.list){yieldreturnitem;}}IEnumeratorIEnumerable.GetEnumerator(){thrownewNotImplementedException();}publicIHtmlStringPageBar(stringurl,objectproperty){if(string.IsNullOrEmpty(url))url=string.Empty;else{url=url.Trim().TrimEnd('?','&');if(url.Contains("?"))url+="&";elseurl+="?
usingSystem;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;

namespaceCommons
{
    public class PageList<T> : IEnumerable<T>{
        private intpageIndex;
        private intpageSize;
        private inttotalPage;
        private inttotalCount;

        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, inttotalCount)
        {
            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, intpageSize)
        {
            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 returnitem;
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            throw newNotImplementedException();
        }

        public IHtmlString PageBar(string url, objectproperty)
        {
            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="http://t.zoukankan.com/" + pageUrl + "">" + i + "</a></li>" +page;
                pageMin =i;
            }
            page = page + "<li class="active"><a href="https://tool.4xseo.com/article/121284.html">" + 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="http://t.zoukankan.com/" + 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="http://t.zoukankan.com/" + 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="http://t.zoukankan.com/" + pageUrl + "">" + this.TotalPage + "</a></li>";
            }
            //上一页和下一页
            if (this.pageIndex == 1)
                page = "<li class="prev disabled"><a href="https://tool.4xseo.com/article/121284.html"><span class="fa fa-angle-left"></span>&nbsp;上一页</a></li>" +page;
            elsepage = "<li class="prev"><a href="http://t.zoukankan.com/" + 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="https://tool.4xseo.com/article/121284.html">下一页&nbsp;<span class="fa fa-angle-right"></span></a></li>";
            elsepage = page + "<li class="next"><a href="http://t.zoukankan.com/" + 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 newHtmlString(html);
        }
    }
}

免责声明:文章转载自《自定义分页控件PageList》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇打开WORD文档时提示“word无法启动转换器mswrd632 wpc”的解决方法数据库高并发的设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Delphi2007升级到Delphi 2010总结

这两天把一个使用Delphi2007成功升级到了Delphi2010。升级途中很艰辛,总结了 以下经验与大家分享。另外,D7使用的第三方组件,由于官方没有发布For Delphi2010的更新,修改的第三 方组件列表见文章尾部。1,PChar因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指针指向目标并不是P...

【ECMAScript5】ES5基础

一、语法 区分大小写。 变量是弱类型的,可以初始化为任意值,也可以随时改变变量所存数据的类型。 每行结尾的分号可有可无,但是建议加上。 注释 单行注释以双斜杠开头(//) 多行注释以单斜杠和星号开头(/*),以星号和单斜杠结尾(*/) 代码块:用{ } 包起来的 二、变量 使用 var (variable的缩写)运算符声明变量。 可以用一个var...

Java 查询数据后进行递归操作

java的递归方法记录: private List<Map<String, Object>> generateOrgMapToTree(List<Map<String, Object>>orgMaps, Integer pid) { if (null == orgMaps || orgMaps...

java将Excel文件上传并解析为List数组

前端 //导入excel文件 layui.use('upload', function() { var upload =layui.upload; //指定允许上传的文件类型 var uploadInst =...

Quartz的基本使用之入门(2.3.0版本)

一、Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自动审核并生成报表 人事系统会在每天早晨8点给有待办的人员自动发送Email提醒 二、使用Quartz之前的准备 1.建立一个Maven项目 2.引入qu...

02_编程规约——集合处理

1.【强制】关于hashCode和equals的处理,必须遵循如下规则 1.1 只要重写equals,就必须重写hashCode。 1.2 因为Set存储的是不重复对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。 1.3 如果自定义对象为Map的键,那么必须重写hashCode和equals。 说明:String重...