在ASP.NET中,GridView控件本身就带有分页的功能,只要把当前页面的索引值赋给GridView的PageIndex就可以实现了分页,至于数据怎么分页,全都由GridView封装起来了。
在ASP.NET MVC中分页的实现就只能靠自己来设计了。首先来说一下分页的原理。现在有一个张news表,中间有很多信息,我们假设一页显示5条记录,这样,页面数量=总记录数/5;这里,如果出现小数,得进位取整。如比总记录和数为51,那么分的页面数量是11,最后一页只有一条记录。好,有这样一个思路后,现在就来做ASP.NET MVC中的分页了。
1、 数据库和表
创建一个Data_Company的数据库,建一张news表,表结构如下图:
ID是主键,并助是自动增长列。
2、 现在,我们用O/R Designer来创建news表的LINQ To SQL的实体类。
创建一个名为MvcCompany的ASP.NET MVC Web Application项目,然后选中Models,右键,“添加”,“新建项”,选中C#中的“数据”,如下图:
选择“LINQ to SQL类”,名称设为“CompanyData.dbml”,然后“添加”。
打开“服务器资源管理器”,创建连接,展开表,找到news表,拖到CompanyData.dbml的左边表视图区(注:.dbml视图左边是SQL表和SQL视图区,右边是SQL存储过程和SQL函数区),效果如下图:
在“解决方案资源管理器”下的,“Models”多了三个文件,CompanyData.dbml,展开它,会有CompanyData.dbml.layout和CompanyData.designer.cs,前者是CompanyData.dbml视图的一些信息(比如news表在的坐标等信息),后者是news实体类及Data_Company数据库的类,在数据库类中聚合了news实体类。
3、 添加news列表类。因为一个news实体类,一次只能表示一条记录,如果呈现一个news表中的数据,最好定义一个集合类来存临时来存放news记录的集合。
类的实现如下:
Code
1using System;
2
3using System.Collections.Generic;
4
5using System.Linq;
6
7using System.Web;
8
9namespace MvcCompany.Models
10
11{
12
13public class NewList<T> : List<T>
14
15{
16
17/**////
18
19/// 页面索引值
20
21///
22
23public int PageIndex { get; private set; }
24
25/**////
26
27/// 每页记录的数量
28
29///
30
31public int PageSize { get; private set; }
32
33/**////
34
35/// 记录总条数
36
37///
38
39public int TotalCount { get; private set; }
40
41/**////
42
43/// 共有的页数和
44
45///
46
47public int TotalPages { get; private set; }
48
49public NewList(IQueryable<T> source, int pageIndex, int pageSize)
50
51{
52
53PageIndex = pageIndex;
54
55PageSize = pageSize;
56
57TotalCount = source.Count();
58
59// 进上去取整( 总记录条数/一面记录的条数)
60
61TotalPages = (int)Math.Ceiling(TotalCount / (double)pageSize);
62
63this.AddRange(source.Skip(pageIndex * pageSize).Take(PageSize));
64
65}
66
67/**////
68
69/// 是否存在前续页
70
71///
72
73public bool HASPreviousPage
74
75{
76
77get { return (PageIndex > 0); }
78
79}
80
81/**////
82
83/// 是否存在后续页
84
85///
86
87public bool HasNextPage
88
89{
90
91get { return (PageIndex + 1 < AllPages); }
92
93}
94
95}
96
97}
98
99
NET技术:ASP.NET MVC分页的实现,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。