(原文vince6799)
ASP コードでのページングは少し面倒です。私はコード作成プロセス中にページング コードを 2 つの関数に書きました。この関数は完全ではありませんが、一般的なアプリケーションには十分です。
<%
'ページング機能は2つの機能に分かれています
'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) ページング計算関数
'PageList(ListType,url,query,Separator,ListLink) ページングリスト関数'ページング
計算関数
'totalrec レコードセットの合計数
'msg_per_page 各ページに表示されるレコードの数は、CalcPage を呼び出すときに事前に割り当てる必要があります。
'currentpage 現在のページ変数。CalcPage を呼び出すときに、事前にこの変数に値を割り当てる必要があります。
'n 総ページ数
'rowcount はページごとのデータ レコードの数を設定します
'PageRs レコードセット オブジェクト
sub CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
n=0 'レコードがない場合はページ番号を0にする
currentpage="" の場合、currentpage=0
'PageRs.EOF および PageRs.bof にはレコードがありません
' PageRs.EOF または PageRs.BOF が記録されていません
PageRs.EOF または PageRs.BOF でない場合
totalrec=ページ数.レコード数
PageRs.pagesize=msg_per_page
if totalrec mod msg_per_page = 0 then 'ページの合計数を計算します、recordcount: データのレコードの合計数
n = totalrecmsg_per_page 'n:総ページ数
それ以外
n = totalrecmsg_per_page+1
終了する場合
isnumeric(currentpage) または currentpage="" でない場合は、currentpage=1
現在のページ <> "" の場合
現在のページ = cint(現在のページ)
終了する場合
現在のページ < 1 の場合
現在のページ = 1
終了する場合
if currentpage*msg_per_page > totalrec and not((currentpage-1)*msg_per_page < totalrec) then
現在のページ=1
終了する場合
PageRs.absolutepage = currentpage 'absolutepage: ポインタをページの先頭に設定します
rowcount = PageRs.pagesize 'pagesize: 各ページのデータ レコード数を設定します。
終了する場合
エンドサブ
%>
<%
'ページングリスト機能
'URLジャンプアドレス
'クエリ?の後のパラメータ
'セパレータセパレータ
'ListType ページング タイプ
'タイプ:0 "最初のページ | 前のページ | 次のページ | 最後のページ"
'タイプ:1 "1 | 2 | 3 | 4 | .....| 次のページ"
'タイプ: 2 "最初のページ | 最初の 10 ページ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 次の 10 ページ | 最後のページ"
'ListLink リンクで使用されるスタイル
sub PageList(ListType,url,query,Separator,ListLink)
if Separator="" then Separator="|"
ListType="" の場合、ListType="0"
ケースのリストタイプを選択
ケース「0」
response.write""¤tpage&"/"&n&"page "
response.write "Total"&totalrec&" 件の情報 "
現在のページ <= 1 の場合
response.write"最初のページ "&Separator&" "
response.write"前のページ "&Separator&" "
それ以外
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">最初のページ</a> "&Separator&" "
response.write"<a href="""&url&"?page="¤tpage-1&"&"&query&""" class="""&ListLink&""">前のページ</a> "&Separator&"  ; 」
終了する場合
現在のページ = n の場合
response.write"次のページ "&Separator&" "
response.write"最後のページ "
それ以外
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">次のページ</a> "&Separator&"  ; 」
response.write"<a href="""&url&"?page="&n&"&"&query&""" class="""&ListLink&""">最後のページ</a> "
終了する場合
ケース「1」
現在のページ < n の場合
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">次のページ</a> "
それ以外
response.write"次のページ "
終了する場合
i=1 ~ n の場合
cstr(i)=cstr(現在のページ) の場合
response.write "<b>"&i&"</b>"&" "&Separator&" "
それ以外
response.write"<a href="""&url&"?page="&i&"&"&query&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
終了する場合
次
ケース「2」
PageMerCout=10 '一度にめくることができる最大ページ数
'レコードの最大ページ番号セグメントを取得します
n mod PageMerCout=0 の場合
MaxPageFiled=nPageMerCout
それ以外
MaxPageFiled=nPageMerCout+1
終了する場合
'現在のページが位置するページ番号セグメントを決定します
現在のページ mod PageMerCout =0 の場合
CurrPageFiled=currentpagePageMerCout
それ以外
CurrPageFiled=currentpagePageMerCout+1
終了する場合
'現在のページ番号セグメントの最大ページ番号と最小ページ番号を取得します
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'出力 "最初のページ | 最初の 10 ページ |"
現在のページ<=1 の場合
response.write"最初のページ "&Separator&" "
それ以外
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">最初のページ</a> "&Separator&" "
終了する場合
CurrPageFiled<=1 の場合
response.write"最初の 10 ページ "&Separator&" "
それ以外
response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&query&""" class="""&ListLink&""">最初の 10 ページ</a> "&Separator&"  ;"
終了する場合
'現在のページ番号セグメントを出力します
for i=MinPageNo ~ MaxPageNo
i<=n の場合
cstr(i)=cstr(現在のページ) の場合
response.write "<b>"&i&"</b>"&" "&Separator&" "
それ以外
response.write"<a href="""&url&"?page="&i&"&"&query&""">"&i&"</a> "&Separator&" "
終了する場合
終了する場合
次
'「次の 10 ページ | 最後のページ」を出力
CurrPageFiled>=MaxPageFiled の場合
response.write"次の 10 ページ "&Separator&" "
それ以外
response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&query&""" class="""&ListLink&""">次の 10 ページ</a> "&Separator&" "
終了する場合
現在のページ>=n の場合
response.write"最後のページ "
それ以外
response.write"<a href="""&url&"?page="&n&"&"&query&""" class="""&ListLink&""">最後のページ</a> "
終了する場合
エンドセレクト
エンドサブ
%>