免费论文查重: 大雅 万方 维普 turnitin paperpass

谈谈分页基于ASP.NET试述MVC3.0通用数据分页组件实现

最后更新时间:2024-02-07 作者:用户投稿原创标记本站原创 点赞:29980 浏览:134223
论文导读:
摘要:针对ASP.NET MVC3.0采用URL驱动的特点,提出一种可重用、高拓展性的通用数据分页组件,详细介绍了自定义分页组件的设计思路和具体实现方法。
关键词:ASP.NET;MVC;数据分页
1009-3044(2013)24-5455-04
1 概述
在Web开发过程中,经常需要从数据库中查询大量数据并显示到Web客户端,如果一次将查询结果全部显示出来,则页面显示过长,服务器负载比较大。处理的方法是采用数据分页显示技术,即在客户端只显示页码和每页记录数。
数据分页显示的实现方式主要有两种,一种是服务器端分页,即先从数据库中查询所有符合条件的记录缓存在服务器端,然后通过设置每页要显示的记录数在客户端进行分页显示;一种是数据源分页,即在数据库中只提取出需要显示的每页记录数并显示在客户端。在ASP.NET Web From事件驱动开发中,可以采用DataGrid、GridView等内置控件对两种方法的分页方式进行分页,但是在ASP.NET MVC开发中,由于其采用了URL驱动的方式,没有像Web Form开发的DataGrid等控件,只能是自行编写代码实现数据分页。因此只要在需要数据分页的地方,都要重复编写代码,造成了很多不必要的重复工作。
该文介绍了一种在ASP.NET MVC开发环境下的通用数据分页组件,采用的是服务端分页方法。
2 通用数据分页组件的设计

2.1 数据分页结构分析

数据分页的元素一般包含有总记录数、当前页码、总的页数、每页显示的记录数、首页、上一页、下一页、尾页、实现跳转的方框以及需要显示页码的数量等,如图1所示基本分页结构。
总记录数:数据集合的总记录数。
当前页码:用户输入。
每页显示的记录数:用户输入。
总的页码:总的记录数除以每页显示的记录数。

2.2 实现思路

利用ASP.NET MVC3.0的razor视图自定义HtmlHelper方法,并将其封装成一个分页控件(Pager)。
1)提取数据源。数据源可以从任何地方提取,比如可以从数据库中查询,可以从文本文件中提取,也可以是从XML中获得等等。
2)封装成数据集。数据源提取之后在服务器端中形成数据集,将数据集封装到一个容器(List)当中,作为数据分页的数据输入。
3)计算总页数。将用户查询的当前页码、每页显示的记录数以及数据集作为参数传到一个计算类(PageList(T)(当前页码,数据集,每页显示记录数))里面,计算出总的页数,并提取出当前页码的记录重新封装到一个新的容器中。
4)生成分页页面。将第3步计算的结果作为参数传到一个分页生成类(PageBuilder),根据计算结果生成分页的页面代码,并显示到客户端。
3 通用数据分页组件的实现

3.1 类的设计

1)PageHelper类。该类主要用于在Razor视图中生成自定义的Helper方法,在客户端中直接调用@Html.Pager方法就可以实现分页。定义如下:
2)PageList类。该类继承自List,主要作为一个容器类,计算总页数和封装需要显示的记录。定义如下:
3)PageOption类。该类主要是设置数据分页控件的相关选项。包括分页元素的html文本格式,上页、下页、首页和尾首四个分页元素的html文本格式,数字页索引按钮及更多页按钮,分页控件的CSS样式类名,显示的最大数字页索引按钮数等。定义如下:
4)PageBuilder类。该类主要用于生成客户端分页代码。定义如下:

3.2 类之间的调用

在使用ASP.NET MVC显示数据分页过程中,首先需要定义一个Model类,该类主要保存了用户需要显示的基本信息,然后定义一个控制器以及与该控制器对应的视图,将获取需要显示的所有Model数据记录集封装到List类,将List类作为参数到PageList类进行计算总页数、重组需要显示的当前页的记录集,再将PageList类返回的结果集显示到客户端,并调用PageHelper类分页控件,由PageHelper类调用PageBuilder类生成分页控件代码并返回给客户端。类之间的调用关系如下图2所示。

3.3 数据源的封装

该文由于只讨论数据分页的方法,因此数据源的获取方式对数论文导读:
据分页没有影响,这里使用了从数据库中查询获得。假设查询的是学生信息表,包含学号、姓名两个字段,获取的数据集定义为res,记录总数假设为200条记录,则将res封装到List,关键代码如下:
其中PageSize为当前每页显示的记录数,TotalItemCount为总的记录数,CurrentPageIndex为当前页码,IList items为将要在客户端显示的记录。

3.5 在客户端调用分页控件

由PageList返回了已经重组好的数据集,并传递到View视图中显示,这时视图显示的记录为当前页的记录。这里使用了foreach循环遍历显示所有当前页的记录并以table控件显示,在table的后面调用了PageHelper类中的Page方法并行数据分页,关键代码如下:
其中Model为PageList重组之后的数据记录集,并调用了PagerOptions分页设置选项类作为参数。

3.6 生成分页控件代码 源于:毕业论文致谢格式www.7ctime.com