asp.net MVC分页代码分享

本文实例为大家分享了MVC分页代码,供大家参考,具体内容如下

using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.Mvc;
using System.Web.Routing;
using System.Data.Objects.DataClasses;
namespace System.Web.Mvc
{
 public static class PagerHelper
 {
  /// <summary>
  /// 分页
  /// </summary>
  /// <param name="helper"></param>
  /// <param name="id">分页id</param>
  /// <param name="currentPageIndex">当前页</param>
  /// <param name="pageSize">分页尺寸</param>
  /// <param name="recordCount">记录总数</param>
  /// <param name="htmlAttributes">分页头标签属性</param>
  /// <param name="className">分页样式</param>
  /// <param name="mode">分页模式</param>
  /// <returns></returns>
  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className, PageMode mode)
  {
   TagBuilder builder = new TagBuilder("table");
   builder.IdAttributeDotReplacement = "_";
   builder.GenerateId(id);
   builder.AddCssClass(className);
   builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
   builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount, mode);
   return builder.ToString();
  }
  /// <summary>
  /// 分页
  /// </summary>
  /// <param name="helper"></param>
  /// <param name="id">分页id</param>
  /// <param name="currentPageIndex">当前页</param>
  /// <param name="pageSize">分页尺寸</param>
  /// <param name="recordCount">记录总数</param>
  /// <param name="className">分页样式</param>
  /// <returns></returns>
  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className)
  {
   return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, PageMode.Normal);
  }
  /// <summary>
  /// 分页
  /// </summary>
  /// <param name="helper"></param>
  /// <param name="id">分页id</param>
  /// <param name="currentPageIndex">当前页</param>
  /// <param name="pageSize">分页尺寸</param>
  /// <param name="recordCount">记录总数</param>
  /// <returns></returns>
  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)
  {

   return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);

  }

  /// <summary>
  /// 分页
  /// </summary>
  /// <param name="helper"></param>
  /// <param name="id">分页id</param>
  /// <param name="currentPageIndex">当前页</param>
  /// <param name="pageSize">分页尺寸</param>
  /// <param name="recordCount">记录总数</param>
  /// <param name="mode">分页模式</param>
  /// <returns></returns>
  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, PageMode mode)
  {
   return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, mode);
  }
  /// <summary>
  /// 分页
  /// </summary>
  /// <param name="helper"></param>
  /// <param name="id">分页id</param>
  /// <param name="currentPageIndex">当前页</param>
  /// <param name="pageSize">分页尺寸</param>
  /// <param name="recordCount">记录总数</param>
  /// <param name="className">分页样式</param>
  /// <param name="mode">分页模式</param>
  /// <returns></returns>
  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className, PageMode mode)
  {
   return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, mode);
  }
  /// <summary>
  /// 获取普通分页
  /// </summary>
  /// <param name="currentPageIndex"></param>
  /// <param name="pageSize"></param>
  /// <param name="recordCount"></param>
  /// <returns></returns>
  private static string GetNormalPage(int currentPageIndex, int pageSize, int recordCount, PageMode mode)

  {
   int pageCount = (recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1);
   StringBuilder url = new StringBuilder();
   url.Append(HttpContext.Current.Request.Url.AbsolutePath + "?page={0}");
   NameValueCollection collection = HttpContext.Current.Request.QueryString;
   string[] keys = collection.AllKeys;
   for (int i = 0; i < keys.Length; i++)
   {
    if (keys[i].ToLower() != "page")
     url.AppendFormat("={1}", keys[i], collection[keys[i]]);
   }
   StringBuilder sb = new StringBuilder();
   sb.Append("<tr><td>");
   sb.AppendFormat("总共{0}条记录,共{1}页,当前第{2}页 ", recordCount, pageCount, currentPageIndex);
   if (currentPageIndex == 1)
    sb.Append("<span>首页</span> ");

   else
   {
    string url1 = string.Format(url.ToString(), 1);
    sb.AppendFormat("<span><a href={0}>首页</a></span> ", url1);

   }

   if (currentPageIndex > 1)
   {
    string url1 = string.Format(url.ToString(), currentPageIndex - 1);
    sb.AppendFormat("<span><a href={0}>上一页</a></span> ", url1);
   }
   else

    sb.Append("<span>上一页</span> ");

   if (mode == PageMode.Numeric)

    sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString()));

   if (currentPageIndex < pageCount)

   {

    string url1 = string.Format(url.ToString(), currentPageIndex + 1);

    sb.AppendFormat("<span><a href={0}>下一页</a></span> ", url1);

   }

   else

    sb.Append("<span>下一页</span> ");

   if (currentPageIndex == pageCount)

    sb.Append("<span>末页</span> ");

   else

   {

    string url1 = string.Format(url.ToString(), pageCount);

    sb.AppendFormat("<span><a href={0}>末页</a></span> ", url1);

   }

   return sb.ToString();

  }

  /// <summary>

  /// 获取数字分页

  /// </summary>
  /// <param name="currentPageIndex"></param>
  /// <param name="pageSize"></param>
  /// <param name="recordCount"></param>
  /// <param name="pageCount"></param>
  /// <param name="url"></param>
  /// <returns></returns>
  private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)
  {
   int k = currentPageIndex / 10;
   int m = currentPageIndex % 10;
   StringBuilder sb = new StringBuilder();
   if (currentPageIndex / 10 == pageCount / 10)
   {
    if (m == 0)
    {
     k--;
     m = 10;
    }
    else
     m = pageCount % 10;
   }
   else
    m = 10;
   for (int i = k * 10 + 1; i <= k * 10 + m; i++)
   {
    if (i == currentPageIndex)
     sb.AppendFormat("<span><font color=red><b>{0}</b></font></span> ", i);
    else
    {
     string url1 = string.Format(url.ToString(), i);
     sb.AppendFormat("<span><a href={0}>{1}</a></span> ", url1, i);

    }

   }
   return sb.ToString();
  }
 }
 /// <summary>
 /// 分页模式
 /// </summary>
 public enum PageMode
 {
  /// <summary>
  /// 普通分页模式
  /// </summary>
  Normal,
  /// <summary>
  /// 普通分页加数字分页
  /// </summary>
  Numeric
 }

}

html代码

<div id="pageNav" class="pageinator">

  @Html.ShowPageNavigate((int)ViewData["pageindex"], (int)ViewBag.pageSize, (int)ViewBag.totalCount);

 </div>

控制器

shopEntities shop = new shopEntities();
  public ActionResult Index()
  {
   //IQueryable<tbl_order> order = (from a in shop.tbl_order select a).OrderBy(a=>a.id).Skip(10).Take(10);
   //ViewData["order"] = order;
   //return View();

   int pageIndex = Request["pageIndex"] == null ? 1 : int.Parse(Request["pageIndex"]);
   int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"]);
   int totalCount = 0;

   //给前台传递 分页的参数数据
   ViewData["pageIndex"] = pageIndex;
   //ViewData["pageSize"] = pageSize;
   ViewBag.pageSize = pageSize;
   //总条数
   totalCount = shop.tbl_order.Count();
   ViewBag.totalCount = totalCount;
   //把当前页面数据发送到前台。
   //ViewData.Model = db.UserInfo.ToList();
   //List<tbl_order> pp = shop.tbl_order
   //     .OrderBy(u => u.id)
   //     .Skip((pageIndex - 1) * pageSize)
   //     .Take(pageSize).ToList();
   IQueryable<tbl_order> pp = shop.tbl_order
       .OrderBy(u => u.id)
       .Skip((pageIndex - 1) * pageSize)
       .Take(pageSize);
   return View(pp);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ASP.NET同步分页MvcPager使用详解

    最近接触了一下MvcPager,来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. 但是挺方便的..以前我们写分页,后端会封装一Page<T>类,现在我们可以用MvcPager给我们提供好的PageList<T>,功能有点类似,不过MvcPager的功能要强大. 一.使用MvcPager这个控件,需要以下支持 1.后端MvcPager.dll引用: 2.前端需要Css:pag

  • ASP.NET MVC分页控件

    1.下载MvcPager.dll文件并引用到MVC项目中 2.在控制器中引用命名空间using Webdiyer.WebControls.Mvc; 3.获取数据集合,数据的总记录数(数据集合有多少条数据),设置每页记录数多少(每页显示多少条数据),获取当前页码(当前第几页) 例如: 4.创建视图,将换成 5.在web.config中的 6.在显示的数据下面 @Html.Pager(Model, new PagerOptions() { AlwaysShowFirstLastPageNumber

  • Asp.Net MVC 分页、检索、排序整体实现代码

    很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功能不是高大全,但求一个清楚明白,也欢迎园友拍砖.前端是bootstrap3+jPaginate,后台基于membership.没什么难点. 先上效果图. 分页其实就是处理好 每页项目数.总项目数.总页数.当前页.为了方便复用,就先从仓库开始说起. 一.建立仓库 1.定义Ipager接口,需要分页的模

  • ASP.Net MVC+Data Table实现分页+排序功能的方法

    本文实例讲述了ASP.Net MVC+Data Table实现分页+排序功能的方法.分享给大家供大家参考,具体如下: 实现思路: 使用datatable内置的分页,排序 使用attribute+反射来控制需要排序和显示的字段以及顺序 分离排序和显示逻辑 若要添加搜索逻辑只需要传递搜索的字段到后端即可(js初始化时把"searching": false拿掉). View : @using BCMS.BusinessLogic @using BCMS.BusinessLogic.Model

  • ASP.NET MVC分页的实现方法

    在这一篇文章中,我们将学习如何在MVC页面中实现分页的方法.分页功能是一个非常实用,常用的功能,当数据量过多的时候,必然要使用分页.在今天这篇文章中,我们学习如果在MVC页面中使用PagedList.Mvc包来实现分页功能. 1) 安装PagedList.Mvc 首先,我们需要安装分页组件包,在Visual Studio 2010中点击[项目]-[管理NuGet程序包],打开NuGet包管理器窗体,在该窗体中,选择"联机"标签,然后搜索pagedlist,如下图所示.点击"安

  • ASP.NET MVC分页和排序功能实现

    分页和排序,应该是软件开发中,需要必知必会的技能了,对于分页,网上很多教程,当然,别人终究是别人的,只有自己理解,会了,并且吸收之后,再用自己的语言,传授出来,这才是硬道理.好了,废话说多了.现在我们进入正题: 这里,我打算使用EF Code-First方式分页控件就是用PagedList.MVC,来做分页,对于排序,实现的思路是,加载数据出来之后,默认是升序排序,然后我们点击一下相应的列标题,就按照该字段降序排序,查数据.思路明确了,就开始干吧! 1.首先新建一个空白的MVC项目,在Model

  • ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)

    ASP.NET MVC中进行分页的方式有多种,但在NuGet上使用最广泛的就是用PagedList.X.PagedList.Mvc进行分页.(原名为:PagedList.Mvc,但是2014年开始,作者将项目名称改名字为"X.PagedList.Mvc"),用这个插件的话会非常便利,大家可以试试,接下来将给大家讲下如何安装这个NuGet插件. ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(原名为PagedList.Mvc) 1.工具--NuGet 程序包管理

  • ASP.NET MVC4 Razor模板简易分页效果

    一.无数据提交 第一步,建立一个 Controller命名为PageIndex的空控制器,自定义一个方法如下: public ActionResult PageIndex(string action, string controller, int currentPage, int pageCount) { //int count = db.Product.Count(); ViewBag.PageCount = pageCount;//从操作中获取总数据页数将传入分页视图页面 ViewBag.C

  • ASP.NET MVC4 HtmlHelper扩展类,实现分页功能

    1.扩展HtmlHelper类方法ShowPageNavigate public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; page

  • asp.net MVC分页代码分享

    本文实例为大家分享了MVC分页代码,供大家参考,具体内容如下 using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Web; using System.Text; using System.Web.Mvc; using System.Web.Routing; using System.Data.Objects.DataClasses; name

  • ASP.NET 高性能分页代码

    最近给分页快搞死,记得之前曾经发过修改DW ASP分页的方法,后来又写过手工打造的ASP分页,现在进入.NET当然要配合存储过程打造纯手工高性能分页了. 为什么会叫做高性能,为什么要手工打造,不使用.NET现有的分页控件呢?这个还要追溯到我修改DW ASP分页的时候,那个我还不怎么懂程序这个东西,只会修修补补,就更不要去谈什么性能问题.当时改的很心烦,接着叫我的私人技术总监张总帮我看看,当时张总就以一种不屑一顾的眼神往着我,说了句话:值得吗? 接着到我手工打造ASP分页,又搞不下去了,张总丢给我

  • js脚本分页代码分享(7种样式)

    本文跟大家分享了7种JS脚本分页样式,相信总有一款是适合你的哦 抓紧先上图给大家挑选一下------------------运行效果------------------- 其实小编挺喜欢最后一款的,亲,你呐? 为大家再分享实现JS脚本分页的代码,直接复制代码,运行即可,抓紧试试吧 <html> <head> <title>7种JS脚本分页代码</title> <style> body {font-size: 12px;} /* Pages Mai

  • THINKPHP内容分页代码分享

    在使用Thinkphp开发的内容管理系统里面,很多东西都要自己开发,内容分页当然也是要自己开发的,下面是我根据查资料自己整理的方法: 1.首先是在后台编辑内容的时候需要插入分页符,不同的编辑器分页符自然也不同了 2.然后就是读取文章内容的时候,要根据分页符来把内容分割成多个数组然,这里需要传值当前是第几页,根据页数来读取分割后的数组 代码如下: 复制代码 代码如下: <php>     $arr_con=explode('_ueditor_page_break_tag_',$dy['art_c

  • MVC异步分页代码分享

    如图: 1.控制器代码  // // GET: /AjaxUser/ shopEntities shop = new shopEntities(); public ActionResult Index() { return View(); } public ActionResult loadjson() { int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"])

  • ThinkPHP 3.2 数据分页代码分享

    TP3.2框架手册,有一个数据分页,不过每次都要写太多的代码,还有中文设置等有些麻烦,做为程序开发者,有必要整理下: O.先看效果图 一.分页方法 复制代码 代码如下: /**  * TODO 基础分页的相同代码封装,使前台的代码更少  * @param $m 模型,引用传递  * @param $where 查询条件  * @param int $pagesize 每页查询条数  * @return \Think\Page  */ function getpage(&$m,$where,$pa

  • js分页代码分享

    复制代码 代码如下: <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script  type='text/javascript' src='jQuery.js'></script><style type

随机推荐