ASP.NET MVC 分页
概述:数据比较多的时候,常使用分页。这里使用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 分页的更多相关文章
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...
- 基于Bootstrap的Asp.net Mvc 分页
基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...
- ASP.NET MVC分页实现
ASP.NET MVC中不能使用分页控件,所以我就自己写了一个分页局部视图,配合PageInfo类,即可实现在任何页面任意位置呈现分页,由于采用的是基于POST分页方式,所以唯一的限制就是必须放在FO ...
- Asp.net MVC分页实例
分页是网页基本功能,这里主要讨论在Asp.net MVC环境下分页的前端实现,不涉及后台分页.实现效果如下图显示: Step 1.建立分页信息类 public class PagingInfo { p ...
- 自己用的一个ASP.Net MVC分页拿出来分享下(转)
实例懒得做.切几个图把代码发上要用的自己搞啦~ 下面是一个helper类. namespace System.Web.Mvc { public enum BarStyle { yahoo, digg, ...
- asp.net MVC分页
.Net MVC 分页代码,分页的关键就是在于这几个参数pageIndex ,recordCount,pageSize ,下面是张林的网站做的一个简单的分页代码 效果如图 public class ...
- Asp.Net MVC 分页、检索、排序整体实现
很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功 ...
- 自己动手写 ASP.NET MVC 分页 part1
学习编程也有一年半载了,从来没有自己动手写过东西,都是利用搜索软件找代码,最近偶发感慨,难道真的继续做码农??? 突发奇想是不是该自己动手写点东西,可是算法.逻辑思维都太弱了,只能copy网上的代码, ...
- ASP.NET MVC分页 Ajax+JsRender
前段时间整mvc的分页,倒是很顺利,参考了以下几篇博客,启发很大. http://www.cnblogs.com/tangmingjun/archive/2012/05/30/2526301.html ...
随机推荐
- Junit4学习(一)新建Junit4工程
一,学习Junit4,学以致用 二,熟悉编写流程 工具:Eclipse,Junit包,hamcrest.core包 1,打开Eclipse开发工具,新建工程:file->Java Project ...
- python之---进程
一.进程 1.什么是进程 (1)正在进行的一个过程或者说一个任务,而负责执行的就是CPU 2.进程与程序的区别 (1)程序仅仅是一堆代码而已,而进程指的是程序的运行过程 同一个程序执行两次,也是两个进 ...
- idea下使用Maven找不到类
当我们配置好pom文件的时候,准备启动Tomcat,Tomcat缺报找不到类的错误.. 可是明明我们的pom文件是没有问题的,在web.xml中也是可以ctrl+鼠标左键把类找到-为啥就报这么一个错误 ...
- (转)添加PROPAGATION_REQUIRES_NEW 事务没有产生作用
最近在做事务添加时 发现自己的事务没有新建,上网查到 仅用作收藏. 其二 注意 事务的注解 应该在 内层的事务上面 一.描述 Spring遇到嵌套事务时,当被嵌套的事务被定义为" ...
- c语言中的内存浅析
1.栈(stack):存局部变量.函数,调用函数时会开辟栈区,函数结束时就自动回收,遵循后进先出的原则,从高地址向低地址增长. 2.堆(heap):malloc.realloc.calloc等开辟的内 ...
- RMQ问题第一弹
今天,我给大家分享一下我在学习 RMQ 问题过程中对该问题的理解. RMQ (Range Minimum/Maximum Query ):中文名为"区间最值查询".RMQ 问题指的 ...
- Python里Pure paths、PurePosixPath、PureWindowsPath的区别
Python是跨平台的,可以在不同的操作系统上运行.但是不同系统上路径 的表示方式是不一样的. 例如windows上路径使用“\”分割子目录和父目录,linux上是使用“/”来分割.这就是PurePo ...
- devstack安装openstack newton版本
准备使用devstack安装openstack N版,搞一套开发环境出来.一连整了4天,遇到各种问题,各种错误,一直到第4天下午4点多才算完成. 在这个过程中感觉到使用devstack搭建openst ...
- ThinkJS框架入门详细教程(一)开发环境
一.前端标配环境 1.nodeJS正确安装,可以参考:http://www.cnblogs.com/chengxs/p/6221393.html 2.git正确安装,可以参考:http://www.c ...
- Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有权限(也可以说没有用户),下面将记录我遇到问题的过程及解决的方法. 在搭建完LNMP环境后用Navicate连接出错 遇到这个问题 ...