国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - ASP.NET和MSSQL高性能分頁實例代碼

ASP.NET和MSSQL高性能分頁實例代碼

2020-04-30 14:39jerrylsxu Sql Server

這篇文章主要介紹了ASP.NET和MSSQL高性能分頁實例代碼的相關資料,需要的朋友可以參考下

首先是存儲過程,只取出我需要的那段數據,如果頁數超過數據總數,自動返回最后一頁的紀錄:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Clear
-- Description: 高性能分頁
-- http://www.cnblogs.com/roucheng/
-- =============================================
Alter PROCEDURE [dbo].[Tag_Page_Name_Select]
-- 傳入最大顯示紀錄數和當前頁碼
@MaxPageSize int,
@PageNum int,
-- 設置一個輸出參數返回總紀錄數供分頁列表使用
@Count int output
AS
BEGIN
SET NOCOUNT ON;
DECLARE
-- 定義排序名稱參數
@Name nvarchar(50),
-- 定義游標位置
@Cursor int
-- 首先得到紀錄總數
Select @Count = count(tag_Name)
FROM [viewdatabase0716].[dbo].[view_tag];
-- 定義游標需要開始的位置
Set @Cursor = @MaxPageSize*(@PageNum-1)+1
-- 如果游標大于紀錄總數將游標放到最后一頁開始的位置
IF @Cursor > @Count
BEGIN
-- 如果最后一頁與最大每次紀錄數相等,返回最后整頁
IF @Count % @MaxPageSize = 0
BEGIN
IF @Cursor > @MaxPageSize
Set @Cursor = @Count - @MaxPageSize + 1
ELSE
Set @Cursor = 1
END
-- 否則返回最后一頁剩下的紀錄
ELSE
Set @Cursor = @Count - (@Count % @MaxPageSize) + 1
END
-- 將指針指到該頁開始
Set Rowcount @Cursor
-- 得到紀錄開始的位置
Select @Name = tag_Name
FROM [viewdatabase0716].[dbo].[view_tag]
orDER BY tag_Name;
-- 設置開始位置
Set Rowcount @MaxPageSize
-- 得到該頁紀錄
Select *
From [viewdatabase0716].[dbo].[view_tag]
Where tag_Name >= @Name
order By tag_Name
Set Rowcount 0
END

然后是分頁控件(... 為省略的生成HTML代碼方法):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
/// <summary>
/// 擴展連接字符串
/// </summary>
public class ExStringBuilder
{
private StringBuilder InsertString;
private StringBuilder PageString;
private int PrivatePageNum = 1;
private int PrivateMaxPageSize = 25;
private int PrivateMaxPages = 10;
private int PrivateCount;
private int PrivateAllPage;
public ExStringBuilder()
{
InsertString = new StringBuilder("");
}
/// <summary>
/// 得到生成的HTML
/// </summary>
public string GetHtml
{
get
{
return InsertString.ToString();
}
}
/// <summary>
/// 得到生成的分頁HTML
/// </summary>
public string GetPageHtml
{
get
{
return PageString.ToString();
}
}
/// <summary>
/// 設置或獲取目前頁數
/// </summary>
public int PageNum
{
get
{
return PrivatePageNum;
}
set
{
if (value >= 1)
{
PrivatePageNum = value;
}
}
}
/// <summary>
/// 設置或獲取最大分頁數
/// </summary>
public int MaxPageSize
{
get
{
return PrivateMaxPageSize;
}
set
{
if (value >= 1)
{
PrivateMaxPageSize = value;
}
}
}
/// <summary>
/// 設置或獲取每次顯示最大頁數
/// </summary>
public int MaxPages
{
get
{
return PrivateMaxPages;
}
set
{
PrivateMaxPages = value;
}
}
/// <summary>
/// 設置或獲取數據總數
/// </summary>
public int DateCount
{
get
{
return PrivateCount;
}
set
{
PrivateCount = value;
}
}
/// <summary>
/// 獲取數據總頁數
/// </summary>
public int AllPage
{
get
{
return PrivateAllPage;
}
}
/// <summary>
/// 初始化分頁
/// </summary>
public void Pagination()
{
PageString = new StringBuilder("");
//得到總頁數
PrivateAllPage = (int)Math.Ceiling((decimal)PrivateCount / (decimal)PrivateMaxPageSize);
//防止上標或下標越界
if (PrivatePageNum > PrivateAllPage)
{
PrivatePageNum = PrivateAllPage;
}
//滾動游標分頁方式
int LeftRange, RightRange, LeftStart, RightEnd;
LeftRange = (PrivateMaxPages + 1) / 2-1;
RightRange = (PrivateMaxPages + 1) / 2;
if (PrivateMaxPages >= PrivateAllPage)
{
LeftStart = 1;
RightEnd = PrivateAllPage;
}
else
{
if (PrivatePageNum <= LeftRange)
{
LeftStart = 1;
RightEnd = LeftStart + PrivateMaxPages - 1;
}
else if (PrivateAllPage - PrivatePageNum < RightRange)
{
RightEnd = PrivateAllPage;
LeftStart = RightEnd - PrivateMaxPages + 1;
}
else
{
LeftStart = PrivatePageNum - LeftRange;
RightEnd = PrivatePageNum + RightRange;
}
}
//生成頁碼列表統計
PageString.Append(...);
StringBuilder PreviousString = new StringBuilder("");
//如果在第一頁
if (PrivatePageNum > 1)
{
...
}
else
{
...
}
//如果在第一組分頁
if (PrivatePageNum > PrivateMaxPages)
{
...
}
else
{
...
}
PageString.Append(PreviousString);
//生成中間頁 http://www.cnblogs.com/roucheng/
for (int i = LeftStart; i <= RightEnd; i++)
{
//為當前頁時
if (i == PrivatePageNum)
{
...
}
else
{
...
}
}
StringBuilder LastString = new StringBuilder("");
//如果在最后一頁
if (PrivatePageNum < PrivateAllPage)
{
...
}
else
{
...
}
//如果在最后一組
if ((PrivatePageNum + PrivateMaxPages) < PrivateAllPage)
{
...
}
else
{
...
}
PageString.Append(LastString);
}
/// <summary>
/// 生成Tag分類表格
/// </summary>
public void TagTable(ExDataRow myExDataRow)
{
InsertString.Append(...);
}

調用方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//得到分頁設置并放入Session
ExRequest myExRequest = new ExRequest();
myExRequest.PageSession("Tag_", new string[] { "page", "size" });
//生成Tag分頁
ExStringBuilder Tag = new ExStringBuilder();
//設置每次顯示多少條紀錄
Tag.MaxPageSize = Convert.ToInt32(Session["Tag_size"]);
//設置最多顯示多少頁碼
Tag.MaxPages = 9;
//設置當前為第幾頁
Tag.PageNum = Convert.ToInt32(Session["Tag_page"]);
string[][] myNamenValue = new string[2][]{
new string[]{"MaxPageSize","PageNum","Count"},
new string[]{Tag.MaxPageSize.ToString(),Tag.PageNum.ToString()}
};
//調用存儲過程
DataTable myDataTable = mySQL.BatchGetDB("Tag_Page_Name_Select", myNamenValue, "Count");
Tag.DateCount = (int)mySQL.OutputCommand.Parameters["@Count"].Value;
Tag.Pagination();
HeadPage.InnerHtml = FootPage.InnerHtml = Tag.GetPageHtml;
for (int i = 0, j = myDataTable.Rows.Count; i < j; i++)
{
Tag.TagTable(new ExDataRow(myDataTable.Rows));
}
TagBox.InnerHtml = Tag.GetHtml;

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美另类视频 | av一区二区三区 | 欧美一区免费 | 国产精品日韩一区二区 | 久久精品99久久 | 欧美午夜一区 | 国产免费亚洲 | www国产xxx | 在线激情视频 | 亚洲综合国产 | 亚洲一区在线播放 | 五月天综合网 | 欧美日韩国产在线播放 | 欧美一级欧美三级在线观看 | 日韩性精品| 欧美色视频在线观看 | 免费观看一区二区三区毛片软件 | 午夜视频免费 | 日日操日日操 | 精品久久久久久国产 | 91麻豆精品国产91久久久更新资源速度超快 | 秋霞电影院午夜伦 | av天天操| 国产一区二区三区在线免费 | 欧美区国产 | 中文字幕在线观看 | 久久窝 | 欧美日韩中文字幕在线 | 日韩中文视频 | a级在线免费 | 一级做a爰性色毛片免费1 | 久久久91精品国产一区二区三区 | 亚洲一区二区三区在线 | 最新中文字幕视频 | 日韩成人精品 | 黄色欧美视频 | 视频一区中文字幕 | 国产区在线观看 | 亚洲成人精品一区 | 中文字幕一区二区三区在线视频 | 在线观看国产二区 |