zoukankan      html  css  js  c++  java
  • asp.net 分页类

    PaginatedList.cs

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

    namespace VML.Web.Mvc {
    public class PaginatedList<T> : List<T> {
    public int Offset { get; private set; }
    public int PageIndex { get; private set; }
    public int PageSize { get; private set; }
    public int TotalCount { get; private set; }
    public int TotalPages { get; private set; }

    /// <summary>
    /// For manually paing.
    /// </summary>
    /// <param name="source">The result of current page</param>
    /// <param name="totalCount"></param>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    public PaginatedList(IEnumerable<T> source, int totalCount, int pageIndex, int pageSize)
    {
    Offset = pageIndex * pageSize;
    PageIndex = pageIndex;
    PageSize = pageSize;
    TotalCount = totalCount;
    TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);

    this.AddRange(source);
    }

    public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) {
    Offset = pageIndex * pageSize;
    PageIndex = pageIndex;
    PageSize = pageSize;
    TotalCount = source.Count();
    TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);

    this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
    }

    public PaginatedList(IQueryable<T> source, int pageSize, int? offset = null, int? pageIndex = null) {
    if (offset != null) {
    Offset = offset.Value;
    PageIndex = (int)Math.Ceiling((decimal)Offset / pageSize);
    } else if (pageIndex != null) {
    Offset = pageIndex.Value * pageSize;
    PageIndex = pageIndex.Value;
    } else {
    //offset = null and pageIndex = null
    throw new ArgumentNullException("offset and pageIndex");
    }
    PageSize = pageSize;
    TotalCount = source.Count();
    TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);

    this.AddRange(source.Skip(Offset).Take(PageSize));
    }

    public bool HasPreviousPage {
    get {
    return (Offset > 0);
    }
    }

    public bool HasNextPage {
    get {
    return (Offset + PageSize < TotalCount);
    }
    }

    }
    }

  • 相关阅读:
    MySQL中默认值中用时间函数的问题
    mysql数据表的操作
    mysql数据库的基本操作
    mysql数据库的几个基本概念
    【转载】CentOS6.5_X64下安装配置MongoDB数据库
    Swap Swap,即交换分区
    linux中给PHP安装mongodb的扩展
    centos yum 安装 mongodb 以及php扩展
    设计模式主要分三个类型:创建型、结构型和行为型
    MySQL DELETE语句和TRUNCATE TABLE语句的区别
  • 原文地址:https://www.cnblogs.com/facial/p/4544415.html
Copyright © 2011-2022 走看看