在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
1
using System;
2
3
using System.Collections.Generic;
4
5
using System.Linq;
6
7
using System.Web;
8
9
namespace MvcCompany.Models
10
11

{
12
13
public class NewList<T> : List<T>
14
15

{
16
17
/**////
18
19
/// 頁面索引值
20
21
///
22
23
public int PageIndex
{ get; private set; }
24
25
/**////
26
27
/// 每頁記錄的數量
28
29
///
30
31
public int PageSize
{ get; private set; }
32
33
/**////
34
35
/// 記錄總條數
36
37
///
38
39
public int TotalCount
{ get; private set; }
40
41
/**////
42
43
/// 共有的頁數和
44
45
///
46
47
public int TotalPages
{ get; private set; }
48
49
public NewList(IQueryable<T> source, int pageIndex, int pageSize)
50
51

{
52
53
PageIndex = pageIndex;
54
55
PageSize = pageSize;
56
57
TotalCount = source.Count();
58
59
// 進上去取整( 總記錄條數/一面記錄的條數)
60
61
TotalPages = (int)Math.Ceiling(TotalCount / (double)pageSize);
62
63
this.AddRange(source.Skip(pageIndex * pageSize).Take(PageSize));
64
65
}
66
67
/**////
68
69
/// 是否存在前續頁
70
71
///
72
73
public bool HASPreviousPage
74
75

{
76
77
get
{ return (PageIndex > 0); }
78
79
}
80
81
/**////
82
83
/// 是否存在后續頁
84
85
///
86
87
public bool HasNextPage
88
89

{
90
91
get
{ return (PageIndex + 1 < AllPages); }
92
93
}
94
95
}
96
97
}
98
99
NET技術:ASP.NET MVC分頁的實現,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。