博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC实践系列8-对查询后分页处理的解决方案
阅读量:7074 次
发布时间:2019-06-28

本文共 1043 字,大约阅读时间需要 3 分钟。

一、前言:

GridView中的分页是用post做的,所以将查询表单中的内容可以存到ViewState中,翻页的时候可以利用,实现起来就比较容易些,而在mvc中这些就要我们自己来做了,Contrib中的分页只能应付简单应用,对于查询后结果的分页没做处理,下面我们来改造一下这个分页程序。

二、准备工作

首先准备一个数据源

ContractedBlock.gif
数据源准备

然后添加一个View:

ContractedBlock.gif
View

这里的分页代码和Contrib中略有不同,一会儿我们来讲解这个不同的原因。

添加一个Controller:

ContractedBlock.gif
Controller

注:这部分内容的详细讲解可以参见:

三、Contrib的分页源码分析

我们先把Pagination和Pager两个文件夹中的源码copy出来,经过分析我们知道CustomPagination是实现了IPagination接口的集合,我们把数据整合到CustomPagination中就可以使用Pager进行分页了,PaginationExtensions是辅助HtmlHelper使用扩展方法的静态类。

四、Pager类改造

经过分析我们发现Pager是通过ToString()方法将分页字符串输出到前台的,所以我们这里需要先改造Pager的ToString()方法。我们常常希望分页是这样显示的:

 上一页  1       ,所以先将ToString()方法改造如下:

ContractedBlock.gif
ToString方法

这里需要交代一下将要实现查询分页的原理,这个方案中我们将会把查询的信息附加到分页的Url上,首先我们会把需要附加的条件添加到一个Dictionary<string, string>类中,然后传给Pager类进行处理。

下面我们来改造一下CreateQueryString方法:

 

ContractedBlock.gif
CreateQueryString

 

这里边主要添加的就是这个GetSearchPage方法,这个方法就是根据客户端传入的查询条件来组织显示分页字符串的。

五、缺点:

因为时使用附加url的方式实现的,所以对于查询条件过多的时候可能有问题,有空我会再实现一个post方案供大家参考。另外这里大家还需要注意的就是url中的查询字符串的名字不能重复,如果重复会直接被替换,详见源码。

六、

 

我的ASP.NET MVC实践系列

其他:

 本文转自 你听海是不是在笑 博客园博客,原文链接:http://www.cnblogs.com/nuaalfm/archive/2009/11/18/1605364.html  ,如需转载请自行联系原作者

你可能感兴趣的文章
md test
查看>>
解决 Nginx + PHP-FPM (Permission denied)报错的办法
查看>>
Cisco IPSec ××× 设计总结
查看>>
python excel 转 csv
查看>>
xmake 工程描述语法更新
查看>>
linux5.4 构建LAMP网站服务平台
查看>>
Cookie与Session的区别
查看>>
比传统事务快10倍?一张图读懂阿里云全局事务服务GTS
查看>>
FAQ_Zabbix:解决模板收集到的数据和真实数据有偏差
查看>>
有关游戏外挂的一些思考
查看>>
Bootstrap 介绍
查看>>
Python 的经典设计格言,格言来源于 Python 但不限于 Python
查看>>
python random模块
查看>>
数据流中的中位数(未)
查看>>
利用xss偷cookie教學
查看>>
CentOS 安装过程【图片】
查看>>
深入Hadoop节点部署的策略
查看>>
linux驱动编译常见错误记录
查看>>
Android设备路径及容量的读取
查看>>
Cocos2d-x3.0模版容器详解之三:cocos2d::Value
查看>>