概述:数据比较多的时候,常使用分页。这里使用bootpag.js和PagedList这两个插件实现。

准备JS的引用

1.这个是bootstrap 中pagination的库



2..NET后台ToPagedList的dll

准备前端页面

1.页面主体

项目中添加一个view,叫HistoryCase



2.分页部分,这是一个partial view



3.将分页部分嵌入页面主体,绑定对应model

准备后端分页model

添加一个model,声明分页属性

  1. public class PaginationModelBase
  2. {
  3. public string QueryString { get; set; }
  4. public int? PageIndex { get; set; }
  5. public int? PageSize { get; set; }
  6. public string Order { get; set; }
  7. }
  8. public class PaginationModel : PaginationModelBase
  9. {
  10. public int Type { get; set; }
  11. }
  12. public class HistoryPaginationModel : PaginationModelBase
  13. {
  14. public string Status { get; set; }
  15. public DateTime? StartTime { get; set; }
  16. public DateTime? EndTime { get; set; }
  17. }

这里的分页,预留了查询时候需要的接口。查询条件为关键字(QueryString),状态(Status),起始时间(End/Start Time)。

前端init分页插件和ajax请求

初始化pagination,根据total count 和 page size,计算出 page count。

  1. History.prototype.InitPagination = function (totalCount, isReInit, isReset) {
  2. var historyPage = this;
  3. var paginationHis = historyPage.$PaginationHis;
  4. var total = $('input[name="total-cnt"]').val();
  5. var pageSize = 5;
  6. pageSize = parseInt(pageSize);
  7. if (totalCount != null) {
  8. total = parseInt(totalCount);
  9. }
  10. if (total == 0) {
  11. paginationHis.addClass("hidden");
  12. } else {
  13. paginationHis.removeClass("hidden");
  14. }
  15. if (isReset) {
  16. paginationHis.bootpag({
  17. page: 1
  18. });
  19. }
  20. paginationHis.bootpag({
  21. total: Math.ceil(total / pageSize),
  22. maxVisible: 10
  23. }).on('page', function (event, num) {
  24. var ajaxUrl = "/Home/AjaxLoadCase";
  25. var postData = historyPage.GetSearchFormData();
  26. postData.Pagination = {
  27. PageIndex: num,
  28. PageSize: pageSize,
  29. Status: postData.Status,
  30. StartTime: postData.StartDate,
  31. EndTime: postData.EndDate
  32. }
  33. if (!isReInit || isReInit == undefined) {
  34. historyPage.LoadDataAjax(ajaxUrl, postData, false);
  35. }
  36. });
  37. }

当点击page num 的时候,触发ajax请求。

  1. History.prototype.LoadDataAjax = function (ajaxUrl, postData, isRest) {
  2. var history = this;
  3. $.blockUI();
  4. $.ajax(ajaxUrl, {
  5. dataType: 'html',
  6. data: postData,
  7. timeout: 12000,
  8. method: "POST",
  9. success: function (data) {
  10. $('input[name="total-cnt"]').remove();
  11. var $caseTable = $('.histroy-case');
  12. $caseTable.remove();
  13. $('.hitory-msg').remove();
  14. $(data).insertBefore(history.$PaginationHis);
  15. var totalCount = $('input[name="total-cnt"]').val();
  16. history.InitPagination(totalCount, true, isRest);
  17. history.AlertSucc("Get case list succeed.")
  18. $.unblockUI();
  19. },
  20. error: function (error) {
  21. history.AlertError("Internal occurs error, please try again.")
  22. $.unblockUI();
  23. },
  24. complete: function () {
  25. $.unblockUI();
  26. }
  27. });
  28. }

逻辑为,发送请求,请求成功,将原来的数据remove,将返回的数据重新绑定到对应元素上。

后台返回partial view和model

注意每次要更新total count。

这是第一页,也是页面第一次渲染时展示的页面;

点击第四页,即可返回正确list

这样一个分页就完成了。

ASP.NET MVC 分页的更多相关文章

  1. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  2. ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页

    我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...

  3. 基于Bootstrap的Asp.net Mvc 分页

    基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...

  4. ASP.NET MVC分页实现

    ASP.NET MVC中不能使用分页控件,所以我就自己写了一个分页局部视图,配合PageInfo类,即可实现在任何页面任意位置呈现分页,由于采用的是基于POST分页方式,所以唯一的限制就是必须放在FO ...

  5. Asp.net MVC分页实例

    分页是网页基本功能,这里主要讨论在Asp.net MVC环境下分页的前端实现,不涉及后台分页.实现效果如下图显示: Step 1.建立分页信息类 public class PagingInfo { p ...

  6. 自己用的一个ASP.Net MVC分页拿出来分享下(转)

    实例懒得做.切几个图把代码发上要用的自己搞啦~ 下面是一个helper类. namespace System.Web.Mvc { public enum BarStyle { yahoo, digg, ...

  7. asp.net MVC分页

    .Net MVC  分页代码,分页的关键就是在于这几个参数pageIndex ,recordCount,pageSize ,下面是张林的网站做的一个简单的分页代码 效果如图 public class ...

  8. Asp.Net MVC 分页、检索、排序整体实现

    很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功 ...

  9. 自己动手写 ASP.NET MVC 分页 part1

    学习编程也有一年半载了,从来没有自己动手写过东西,都是利用搜索软件找代码,最近偶发感慨,难道真的继续做码农??? 突发奇想是不是该自己动手写点东西,可是算法.逻辑思维都太弱了,只能copy网上的代码, ...

  10. ASP.NET MVC分页 Ajax+JsRender

    前段时间整mvc的分页,倒是很顺利,参考了以下几篇博客,启发很大. http://www.cnblogs.com/tangmingjun/archive/2012/05/30/2526301.html ...

随机推荐

  1. json中关于jo.[]中字符串一致的问题

    procedure TForm1.btn1Click(Sender: TObject);var jo:ISuperObject; Temp:string; temp1:Boolean;begin  j ...

  2. Zookeeper-5分钟快速掌握分布式应用程序协调服

    一.Zookeeper 安装 1.zookeeper支持brew安装. ➜ ~ brew info zookeeper zookeeper: stable (bottled), HEAD Centra ...

  3. Python数据分析numpy库

    1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...

  4. Struts2第十三篇【防止表单重复提交】

    回顾防止表单重复提交 当我们学习Session的时候已经通过Session来编写了一个防止表单重复提交的小程序了,我们来回顾一下我们当时是怎么做的: 在Servlet上生成独一无二的token,保存在 ...

  5. python实例编写(5)--异常处理,截图,用例设计

    一.python的异常处理 异常抛出处理机制: 1.若在运行时发生异常,解释器会查找相应的处理语句(handler) 2.若在当前函数无法找到,就将异常传给上层的调用函数,看是否能处理 3.如果在最外 ...

  6. temp-成都农商行路径

    route add 30.3.4.0 mask 255.255.255.0 30.3.12.254 route add 30.3.12.0 mask 255.255.255.0 30.3.12.254 ...

  7. XML预览

    功能:  实现模板文件的预览 模板实体类中有一个content字段,它的值是xml形式的,就是要预览它的内容; 实现思路:  在java后台中将这个xml内容以xml文件的形式保存到服务器上,然后将路 ...

  8. 离线安装 Cloudera Manager 5 和 CDH5.10

    关于CDH和Cloudera Manager CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloud ...

  9. angular $compiler

    directive是如何被compiled HTML编译发生在三个阶段: 1.$compile遍历DOM节点匹配directives 如果compiler找到元素上的directive,directi ...

  10. 关于web前端代码艺术

    以前一直都以为html代码要分离得很好,html一个文件,css一个文件,js一个文件,然后最好一个html页面里面不要要太多冗余的代码,不要恶心地引入一个又一个的js,连jquery的引入我都觉得有 ...