zoukankan      html  css  js  c++  java
  • 【转载】MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集

     ASP.NET MVC3 基础教程 – Web Pages 1.0 linFen 2011-05-03 15:21 阅读:232 评论:0  

    Razor引擎学习:RenderBody,RenderPage和RenderSection linFen 2011-04-20 09:52 阅读:783 评论:0  
    为ASP.NET MVC 2.0添加Razor模板引擎 (on .NET4) linFen 2011-04-20 09:46 阅读:153 评论:0  
    ASP.NET MVC的全球化方案 (转) linFen 2010-11-02 12:53 阅读:98 评论:0  
    将ASP.NET MVC 2.0 部署在IIS6和IIS7上的教程 linFen 2010-03-04 22:14 阅读:179 评论:0  
    【翻译】ASP.NET MVC中你必须知道的13个扩展点 (转) linFen 2009-06-01 12:55 阅读:207 评论:0  
    Asp.net MVC生命周期(转) linFen 2009-06-01 09:07 阅读:95 评论:0  
    ASP.NET MVC + jQuery + Newtonsoft.Json 快乐的AJAX linFen 2009-04-14 11:22 阅读:2720 评论:0  
    让ASP.NET MVC页面返回不同类型的内容 linFen 2009-02-11 13:58 阅读:92 评论:0  
    ASP.NET MVC 1.0 RC 版发布了(转) linFen 2009-02-11 11:37 阅读:68 评论:0  
    Asp.Net MVC:基于cookie的用户自选视图引擎实现 linFen 2009-02-11 09:44 阅读:171 评论:2  
    ASP.NET MVC: 用db4o来做TempDataProvider linFen 2009-02-11 09:41 阅读:152 评论:0  
    ASP.NET MVC URL Routing 学习 linFen 2009-02-11 09:27 阅读:135 评论:0  
    ASP.NET MVC案例教程(基于ASP.NET MVC beta) linFen 2009-02-11 09:03 阅读:95 评论:0  
    ASP.NET MVC案例教程(一) linFen 2009-02-11 09:01 阅读:103 评论:0  
    Using MVC Pattern in Web Interactions linFen 2008-07-05 10:37 阅读:2391 评论:0  

    namespace Entity
    {
        public interface IPagedList
        {
            /// <summary>
            /// 记录数
            /// </summary>
            int TotalCount { get; set; }
            /// <summary>
            /// 页数
            /// </summary>
            int TotalPages { get; set; }
            /// <summary>
            /// 当前页
            /// </summary>
            int PageIndex { get; set; }
            /// <summary>
            /// 页面大小
            /// </summary>
            int PageSize { get; set; }
            /// <summary>
            /// 是否上一页
            /// </summary>
            bool IsPreviousPage { get; }
            /// <summary>
            /// 是否下一页
            /// </summary>
            bool IsNextPage { get; }
        }
        /// <summary>
        /// 分页通用类
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class PagedList<T> : List<T>, IPagedList
        {
            /// <summary>
            /// 数据源为IQueryable的范型
            /// </summary>
            /// <param name="source">数据源</param>
            /// <param name="index">当前页</param>
            /// <param name="pageSize">每页显示多少条记录</param>
            public PagedList(IQueryable<T> source, int index, int pageSize)
            {
                if (source != null) //判断传过来的实体集是否为空
                {
                    int total = source.Count();
                    this.TotalCount = total;
                    this.TotalPages = total / pageSize;

                    if (total % pageSize > 0)
                        TotalPages++;

                    this.PageSize = pageSize;
                    if (index > this.TotalPages)
                    {
                        index = this.TotalPages;
                    }
                    if (index < 1)
                    {
                        index = 1;
                    }
                    this.PageIndex = index;
                    this.AddRange(source.Skip((index - 1) * pageSize).Take(pageSize).ToList()); //Skip是跳到第几页,Take返回多少条
                }
            }

            /// <summary>
            /// 总页数
            /// </summary>
            public int TotalPages { get; set; }
            /// <summary>
            /// 总记录数
            /// </summary>
            public int TotalCount { get; set; }
            /// <summary>
            /// 当前页
            /// </summary>
            public int PageIndex { get; set; }
            /// <summary>
            /// 每页显示多少条记录
            /// </summary>
            public int PageSize { get; set; }
            /// <summary>
            /// 是否有上一页
            /// </summary>
            public bool IsPreviousPage { get { return (PageIndex > 0); } }
            /// <summary>
            /// 是否有下一页
            /// </summary>
            public bool IsNextPage { get { return (PageIndex * PageSize) <= TotalCount; } }

            private NameValueCollection _AddParameters = new NameValueCollection();
            /// <summary>
            /// 分页参数
            /// </summary>
            public NameValueCollection AddParameters
            {
                get { return _AddParameters; }
                set { _AddParameters = value; }
            }

        }

        /// <summary>
        /// PagedList扩展类
        /// </summary>
        public static class ExtendPagedList
        {
            /// <summary>
            ///  返回PagedList<T>类型的IQueryable的扩展方法
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="linq"></param>
            /// <param name="pageIndex"></param>
            /// <param name="pageSize"></param>
            /// <returns></returns>
            public static PagedList<T> ToPagedList<T>(this IQueryable<T> linq, int pageIndex, int pageSize)
            {
                return new PagedList<T>(linq, pageIndex, pageSize);
            }
        }
    }

  • 相关阅读:
    有一种努力叫“凌晨四点”
    编程思想
    小记
    团队精神与集体主义
    变量起名
    软件项目估量方法
    戏说QQ
    压力说
    AngularJS指令基础(一)
    Leetcode 1021. Best Sightseeing Pair
  • 原文地址:https://www.cnblogs.com/fx2008/p/2283211.html
Copyright © 2011-2022 走看看