このページングでは、0 カーソル (Rs.Open Sql,Conn,0,1) が使用されます。でも、それほど速いとは感じません、10
10,000 個のデータのページング時間は 300 ミリ秒を超えます。
<%
クラスページ
プライベート CurrPage
プライベートページN
プライベート URLStr
プライベート TempStr
プライベートエラー情報
プライベートはエラーです
プライベートトータルレコード
プライベート合計ページ
パブリック ページR
プライベート TempA(11)
プライベートテンプB(8)
'------------------------------------------------ - ---------
プライベートサブクラス_Initialize()
CurrPage=1'//現在のページはデフォルトで最初のページとして表示されます
PageN=10'//デフォルトでは、各ページに 10 個のデータが表示されます
URLStr="#"
TempStr=""
ErrInfo="エラー情報:"
IsErr=False
エンドサブ
プライベートサブクラス_Terminate()
IsObject(PageRs) の場合
ページRs.Close
PageRs=何も設定しない
終了の場合
TempAの消去
TempBの消去
エンドサブ
'------------------------------------------------ - ---------
'//現在のページ番号を取得する
Public プロパティ Let CurrentPage(Val)
CurrPage=Val
終了プロパティ
Public プロパティ Get CurrentPage()
現在のページ=現在のページ
終了プロパティ
'//各ページに表示されるアイテムの数を取得します
Public プロパティ Let PageNum(Val)
ページN=値
終了プロパティ
Public プロパティ Get PageNum()
ページ番号=ページN
終了プロパティ
'//URLを取得
Public プロパティ Let URL(Val)
URLStr=Val
終了プロパティ
パブリック プロパティ Get URL()
URL=URLStr
終了プロパティ
'//テンプレートを取得する
Public プロパティ Let Temp(Val)
TempStr=Val
終了プロパティ
パブリック プロパティ Get Temp()
Temp=TempStr
終了プロパティ
'------------------------------------------------ - ----------
Public Sub Exec(Sql,ConnObj)
エラー時は次へ再開
Set PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'クライアント側カーソルを使用すると効率が向上します
PageRs.PageSize = PageN 'ページング レコード セットの各ページに表示されるレコードの数を定義します
PageRs.Open Sql,ConnObj,0,1
Err.Number<>0 の場合
エラークリア
ページRs.Close
PageRs=何も設定しない
ErrInfo=ErrInfo&"レコードセットの作成またはオープン中にエラーが発生しました..."
IsErr=True
Response.Write ErrInfo
応答.終了
終了の場合
TotalRecord=PageRs.RecordCount'//0 の場合はどうなりますか?
TotalRecord>=1 の場合
'------------------------------------------------ - - - - - - - - - - - - - - 始める
'//総ページ数を計算してください。Ps、PageRs.PageCount を使用しないのはなぜですか?
'TotalRecord Mod PageN=0 の場合、次に
'TotalPage=PageRs.RecordCountPageN
'それ以外
'TotalPage=PageRs.RecordCountPageN
'TotalPage=Abs(Int(TotalPage))
'終了の場合
TotalPage=PageRs.PageCount
'//現在受信したページ番号を処理します。デフォルトは1なので、数値型でない場合は1になります。
IsNumeric(CurrPage) の場合
CurrPage=CLNg(CurrPage)
CurrPage<1 の場合は CurrPage=1
CurrPage>TotalPage の場合、CurrPage=TotalPage
それ以外
'//Dim M:M="":IsNumeric(M)=True
現在のページ=1
終了の場合
'------------------------------------------------ - - - - - - - - - - - - - -仕上げる
それ以外
合計ページ=0
現在のページ=1
終了の場合
'//
PageRs.AbsolutePage = CurrPage 'absolutepage: ポインタをページの先頭に設定します
PageRs.PageSize=ページN
エンドサブ
プライベートサブ初期化()
'プライベートテンポラ(10)
TempA(1)="{N1}" '//ホームページ
TempA(2)="{N2}"'//前のページ
TempA(3)="{N3}"'//次のページ
TempA(4)="{N4}"'//最後のページ
TempA(5)="{N5}"'//現在のページ番号
TempA(6)="{N6}"'//総ページ数
TempA(7)="{N7}"'//ページごとのアイテム数
TempA(8)="{N8}"'//記事の総数
TempA(9)="{L}"'//ループの開始ラベル
TempA(10)="{N}"'//ループ内の単一ラベル: ページ番号
TempA(11)="{L/}"'//ループ終了ラベル
'プライベート TempB(8)
TempB(1)="ホーム"
TempB(2)="前のページ"
TempB(3)="次のページ"
TempB(4)="最後のページ"
TempB(5)=CurrPage'//現在のページ番号
TempB(6)=TotalPage'//総ページ数
TempB(7)=PageN'//ページごとのアイテム数
TempB(8)=TotalRecord'//記事の総数
エンドサブ
パブリックサブショー(スタイル)
IsErr=True の場合
Response.Write ErrInfo
出口サブ
Init() を呼び出し
たら終了
ケースのスタイルを選択してください
ケース1
Response.Write StyleA()
ケース2
Response.Write StyleB()
ケース3
Response.Write StyleC()
ケース4
Response.Write StyleD()
それ以外の場合
ErrInfo=ErrInfo&「現在のスタイルは存在しません...」
Response.Write ErrInfo
エンドセレクト
エンドサブ
パブリック関数 ShowStyle(スタイル)
IsErr=True の場合
ShowStyle=エラー情報
終了関数
Init() を呼び出し
たら終了
ケースのスタイルを選択してください
ケース1
ShowStyle= スタイルA()
ケース2
ShowStyle= スタイルB()
それ以外の場合
ErrInfo=ErrInfo&「現在のスタイルは存在しません...」
ShowStyle=エラー情報
エンドセレクト
終了関数
プライベート関数 StyleA()
' トップページ 前のページ 次のページ 最後のページ このページは 1/20 ページ、合計 20 ページ、1 ページあたり 10 記事、合計 200 記事です。
'//ページネーションの例: [ホーム] [前のページ] [次のページ] [最後のページ] [ページ: 4/5 ページ] [合計 86 記事/20 記事/ページ] Go to: _ page
'//タグ: {N1} {N2} {N3} {N4} || 合計: {N8} レコード {N6} ページは現在、ページごとに {N5} ページ {N7} レコードです
IsEmpty(TempStr) の場合
ErrInfo=ErrInfo&"テンプレートが空です..."
スタイルB=エラー情報
終了関数
終了の場合
ディム
TotalPage>1 の場合
CurrPage>1 の場合
M="<a href='"&UrlStr&"Page=1'>"&"ホーム"&"</a>"
TempStr=Replace(TempStr,"{N1}",M)
M="<a href='"&UrlStr&"Page="&CurrPage-1&">"&"前のページ"&"</a>"
TempStr=Replace(TempStr,"{N2}",M)
CurrPage<TotalPage の場合
M="<a href='"&UrlStr&"Page="&CurrPage+1&">"&"次のページ"&"</a>"
TempStr=Replace(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&">"&"最後のページ"&"</a>"
TempStr=Replace(TempStr,"{N4}",M)
それ以外
TempStr=Replace(TempStr,"{N3}","次のページ")
TempStr=Replace(TempStr,"{N4}","最後のページ")
終了の場合
それ以外
TempStr=Replace(TempStr,"{N1}","ホームページ")
TempStr=Replace(TempStr,"{N2}","前のページ")
M="<a href='"&UrlStr&"Page="&CurrPage+1&">"&"次のページ"&"</a>"
TempStr=Replace(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&">"&"最後のページ"&"</a>"
TempStr=Replace(TempStr,"{N4}",M)
終了の場合
それ以外
TempStr=Replace(TempStr,"{N1}","ホームページ")
TempStr=Replace(TempStr,"{N2}","前のページ")
TempStr=Replace(TempStr,"{N3}","次のページ")
TempStr=Replace(TempStr,"{N4}","最後のページ")
終了の場合
T=TempStr
T=置換(T,"{N8}",TotalRecord)
T=Replace(T,"{N6}",TotalPage)
T=Replace(T,"{N5}",CurrPage)
T=置換(T,"{N7}",PageN)
TempStr=T
スタイルA=TempStr
終了関数
プライベート関数 StyleB()
'ホームページ|< 1 2 3 4 5 6 7 >| 最後のページ
'//タグ:{N1} {N2} {L}{N}{L/}{N3}{N4}
IsEmpty(TempStr) の場合
ErrInfo=ErrInfo&"テンプレートが空です..."
スタイルB=エラー情報
終了関数
終了の場合
Dim ForceNum,BackNum'//現在のページの前後に表示される番号
ForceNum=5
バックナンバー=4
ディム
'//フロントページ
M="<a href='"&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=Replace(TempStr,"{N1}",M)
'//最後のページ
M="<a href='"&UrlStr&"Page="&TempB(6)&">"&TempB(4)&"</a>"
TempStr=Replace(TempStr,"{N4}",M)
'//前のページ
M="|<"
CurrPage-1>=1 の場合
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
終了の場合
TempStr=Replace(TempStr,"{N2}",M)
'//次のページ
M=">|"
If CurrPage+1<=TotalPage then
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
終了の場合
TempStr=Replace(TempStr,"{N3}",M)
'//ループラベルを削除
薄暗い N1、N2、N3、N4、N5、N6
InStr(TempStr,"{L}")>0 の場合
N1=InStr(TempStr,"{L}")
終了の場合
InStr(TempStr,"{L/}")>0 の場合
N2=InStr(TempStr,"{L/}")
終了の場合
N2<=N1 の場合
ErrInfo=ErrInfo&"ループ ラベルのエラー..."
スタイルB=エラー情報
終了関数
終了の場合
N3=Mid(TempStr,N1,N2-N1+4)'//{L}{L/} ループ タグを含むストレージ テンプレート
N4=Replace(N3,"{L}","")'//{L}{L/} ループ タグを含まないストレージ テンプレート
N4=置換(N4,"{L/}","")
'//ページ番号リスト
ディム FirstPageNum、LastPageNum
CurrPage-ForceNum<=1 の場合
最初のページ番号=1
ページリスト = "
それ以外
FirstPageNum=CurrPage-ForceNum
PageList="... ..."
終了の場合
CurrPage+BackNum>=TotalPage の場合
LastPageNum=合計ページ
ページリスト_2=""
それ以外
LastPageNum=CurrPage+BackNum
PageList_2="... ..."
終了の場合
ディムI
I=FirstPageNum から LastPageNum の場合
I=CurrPage の場合
N5=置換(N4,"{N}","<b>"&I&"</b>")
N6=N6&N5
それ以外
M="<a href='"&UrlStr&"Page="&I&">"&I&"</a>"
N5=置換(N4,"{N}",M)
N6=N6&N5
終了の場合
次
TempStr=置換(TempStr,N3,N6)
スタイルB=TempStr
終了関数
プライベート関数 StyleC()
'ホームページ|< |<< 1 2 3 4 5 6 7 >>| 最後のページ
'//このスタイルは StyleB に基づいて変更され、次の 2 つのタグが追加されます: {N9} 前の 10 ページ {N10} 次の 10 ページ
'//タグ:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
ディムT
T=スタイルB()
'//最初の10ページ
M="|<<"
CurrPage-10>=1 の場合
M="<a href='"&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
終了の場合
T=置換(T,"{N9}",M)
M=">>|"
If CurrPage+10<=TotalPage then
M="<a href='"&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
終了の場合
T=置換(T,"{N10}",M)
スタイルC=T
終了関数
プライベート関数 StyleD()
'//このスタイルは StyleC に基づいて変更されます
'//合計 {N8} レコード {N6} ページは現在、ページあたり {N5} ページ {N7} レコードです
'//ホームページ|< |<< 1 2 3 4 5 6 7 >>| 最後のページ
'//タグ:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
ディムT
T=スタイルC()
T=置換(T,"{N8}",TotalRecord)
T=Replace(T,"{N6}",TotalPage)
T=Replace(T,"{N5}",CurrPage)
T=置換(T,"{N7}",PageN)
スタイルD=T
終了関数
終了クラス
%>