上次写了篇:老生常谈:Asp.net Mvc 3 加载cshtml文件创建自定义分页

遇到的问题: 单纯的数据列表,分页ok,但是加上其它外界因素,常见的如 查询,排序,分页如何跟它们结合呢?

分页如何和查询,排序结合?

我的思路,查询、排序为主,分页为次。

1.查询条件改变,页码重新加载,当前页面从1重新开始

2. 查询后生成的页码保存查询对应的参数和值,从而模拟查询+分页的效果。

 

拓展分页控件,使其可以包含其它参数。

常见的传参方式: Url传值,Form传值

常见的数据格式: Text 和 json

 

更改原有设计:

DataType 参数类型 text/json

 

PageModel 页码类包含:

PageIndex 页码索引

PageText 页码显示文本

 

Pager 分页控件类

PagerTemp 分页控件加载cshtml或者ascx名称

PagerID 分页控件ID

PagerShow 是否显示分页

PageSize 每页显示的记录数目

CurPage 当前页的索引

PageNum 最少显示的页码数目[偏移量]

Totalpage 总页数

TotalSize 总记录数据

List<PageModel> 页码列表

ControllerName 控制器名称

ActionName 动作名称

DataType 数据格式

Dictionary<string,string> 参数列表

PageData 数据

PageHelper 分页控件生成类,拓展HtmlHelper用于创建分页控件

public static MvcHtmlString Pager(this HtmlHelper helper,
string pagerId, //分页控件Id
int curPage, //当前页码
int totalSize, //总记录数
string pagerTemp = "_PagerTemp", //分页控件模板
int pageSize = 10, //每页显示10条
int pageNum = 5, //显示的页码数目

string datatype = "text", //默认是Url传值
Dictionary<string, string> parameters = null //参数列表

){

//创建分页控件方法

}

 

_PageTemp 分页控件显示的模板

 

总结: 美中不足的一点是 查询或者过滤条件改变的时候,要清空 curPage 为 1

点击下载

\