ASP Multi Page 通用分頁函數


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
' @numbers : 總記錄數目
' @per_page: 每頁顯示記錄
' @current_page: 目前分頁
' @url_query_string: 目前頁面的Query String
Function get_multi_page(numbers,per_page,current_page,url_query_string)
current_page = Int(current_page)

Dim url
url = Request.ServerVariables("Script_Name") & url_query_string

get_multi_page=""

Dim page, offset, page_counter

If Int(numbers) > Int(per_page) Then
page = 10
offset = 2

Dim pages,from_page,to_page

If numbers Mod Cint(per_page) = 0 Then
pages = Int(numbers / per_page)
Else
pages = Int(numbers / per_page) + 1
End If

from_page = current_page - offset
to_page = current_page + page - offset - 1

If page > pages Then
from_page = 1
to_page = pages
Else

If from_page < 1 Then
to_page = current_page + 1 - from_page
from_page = 1

If (to_page - from_page) < page And (to_page - from_page) < pages Then to_page = page
ElseIF to_page > pages Then
from_page = current_page - pages + to_page
to_page = pages

If (to_page - from_page) < page And (to_page - from_page) < pages Then from_page = pages - page + 1
End If
End If

get_multi_page = "<a href='" & url & "page=1'><<</a> "

For page_counter = from_page TO to_page
If page_counter <> current_page Then
get_multi_page = get_multi_page & "<a href='" & url & "page=" & page_counter & "'>[" & page_counter & "]</a> "
Else
get_multi_page = get_multi_page & "<b>[" & page_counter & "]</b> "
End If
Next

If Int(pages) > Int(page) Then
get_multi_page = get_multi_page & " ... <a href='" & url & "page=" & pages & "'> [" & pages & "] >></a>"
Else
get_multi_page = get_multi_page & "<a href='" & url & "page=" & pages & "'>>></a>"
End If
End If
End Function