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

准备JS的引用

1.这个是bootstrap 中pagination的库



2..NET后台ToPagedList的dll

准备前端页面

1.页面主体

项目中添加一个view,叫HistoryCase



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



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

准备后端分页model

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

public class PaginationModelBase
{
public string QueryString { get; set; }
public int? PageIndex { get; set; }
public int? PageSize { get; set; }
public string Order { get; set; }
} public class PaginationModel : PaginationModelBase
{
public int Type { get; set; }
} public class HistoryPaginationModel : PaginationModelBase
{
public string Status { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
}

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

前端init分页插件和ajax请求

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

History.prototype.InitPagination = function (totalCount, isReInit, isReset) {
var historyPage = this;
var paginationHis = historyPage.$PaginationHis; var total = $('input[name="total-cnt"]').val();
var pageSize = 5;
pageSize = parseInt(pageSize);
if (totalCount != null) {
total = parseInt(totalCount);
}
if (total == 0) {
paginationHis.addClass("hidden");
} else {
paginationHis.removeClass("hidden");
}
if (isReset) {
paginationHis.bootpag({
page: 1
});
}
paginationHis.bootpag({
total: Math.ceil(total / pageSize),
maxVisible: 10
}).on('page', function (event, num) {
var ajaxUrl = "/Home/AjaxLoadCase";
var postData = historyPage.GetSearchFormData();
postData.Pagination = {
PageIndex: num,
PageSize: pageSize,
Status: postData.Status,
StartTime: postData.StartDate,
EndTime: postData.EndDate
}
if (!isReInit || isReInit == undefined) {
historyPage.LoadDataAjax(ajaxUrl, postData, false);
}
});
}

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

History.prototype.LoadDataAjax = function (ajaxUrl, postData, isRest) {
var history = this;
$.blockUI();
$.ajax(ajaxUrl, {
dataType: 'html',
data: postData,
timeout: 12000,
method: "POST",
success: function (data) {
$('input[name="total-cnt"]').remove();
var $caseTable = $('.histroy-case');
$caseTable.remove();
$('.hitory-msg').remove(); $(data).insertBefore(history.$PaginationHis);
var totalCount = $('input[name="total-cnt"]').val();
history.InitPagination(totalCount, true, isRest);
history.AlertSucc("Get case list succeed.")
$.unblockUI();
},
error: function (error) {
history.AlertError("Internal occurs error, please try again.")
$.unblockUI();
},
complete: function () {
$.unblockUI();
}
});
}

逻辑为,发送请求,请求成功,将原来的数据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. 201521123050 《Java程序设计》第14周学习总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 1.1立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) ...

  2. Java课程设计 猜数游戏团队博客

    1.团队成员介绍(需要有照片) 曾飞远(组长):网络1513 201521123080 江鹭涛(组员):网络1513 201521123075 2. 项目git地址 3. 项目git提交记录截图(要体 ...

  3. python 基础之字符编码和文件处理

    一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...

  4. Python爬虫总结

    Python爬虫的原理:1通过URLopen()来获取到url页面, 这个过程可以加代理 2这个页面上都是字符串,所以我们而通过字符串查找的方法来获取到目标字符串,用到了正则来匹配目标re.finda ...

  5. IDEA导入Eclipse项目 【未结束的注释、非法类型的开始、缺少符号】

    如果我们导入Eclipse项目的使用出现了未结束的注释.非法类型的开始.缺少符号这么一些编译时期的错误,而我们的代码明明看起来就是正常的-. 我们去检查一下是否编码的问题:把FileEncoding全 ...

  6. STS安装

    在eclipse中安装spring tool Suite插件需要根据eclipse版本找到对应的spring tool Suite安装包. spring tool Suite 官网地址:http:// ...

  7. GCD之异步同步体会

    前面的博文也有写到同步异步,可能是看他人的博文,自己没有实验,感觉理解不深,所以就敲了些代码比较一下串行.并行分别对应的同步.异步. 1.首先创建串行.并行线程队列 1 2 dispatch_queu ...

  8. 我的第一个python web开发框架(1)——前言

    由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...

  9. Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)D. Felicity's Big Secret Revealed

    题目连接:http://codeforces.com/contest/757/problem/D D. Felicity's Big Secret Revealed time limit per te ...

  10. I/P/B/SI/SP帧和PTS/DTS的关系

    I frame:帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象.I帧可以看成是 ...