ASPページング機能、ページングナビゲーション
著者:Eve Cole
更新時間:2009-06-26 18:09:37
プログラムコード
<%
'//ページング関数
'//psize: 各ページに表示されるデータの数
'//pindex: 現在のページ番号
'//tbName: テーブル名
'//keyIndex: どのフィールドに基づくページング、通常は自己増加型 (アクセス データベースの自動番号付け)
'//どこ:クエリ条件
'//order: ソート条件、デフォルトは「order by " &keyIndex &" desc」
'//レコードの総数とページの総数は、返された結果セットから直接取得できます。フィールド datacount にはレコードの総数が格納され、フィールド pagecount には総ページ数が格納されます。
プライベート pindex、データカウント、ページ
'データカウント = 0
' ページ = 1
パブリック関数changePage(psize,tbName,keyIndex,where,order)
dimsqlstring
pindex = Trim(Request.QueryString("ページ"))
if isnumeric(psize) または psize="" then psize=1' //各ページに表示されるデータの数
isnumeric(pindex) または pindex="" でない場合、pindex=1' //現在のページ番号
if order="" then order=" " & keyIndex & " desc" で並べ替えます
'//データの総数を取得する
'dim データ数、ページ
set rs=conn.execute("select count(*) as datacount from " & tbName & " where 1=1 " & where)
datacount = rs("datacount")'//レコードの総数
rs.close
rs=何も設定しない
'//総ページ数を計算する
if (データカウント mod psize)=0 then
ページ=データ数 psize
それ以外
ページ=データ数 psize + 1
終了する場合
'//
cint(pindex)>pages の場合、pindex=pages
'SQL文字列を結合します
pindex<=1 の場合、
sqlstring="select top " & psize & " *," & datacount & " as datacount、" & pages & " as pagecount from " &_
tbName & " where 1=1 " & where & " " & order
それ以外
sqlstring="select top " & psize & " *," & datacount & " as datacount、" & pages & " as pagecount from " &_
tbName & " where 1=1 and " & keyIndex & " not in(select top " & (pindex-1)*psize & " " & keyIndex & " from " &_
tbName & " where 1=1 " & where & " " & order & ") " & where & " " & order
終了する場合
'応答.書き込み(sqlstring)
setchangePage=conn.execute(sqlstring)
終了関数
'//ページナビゲーション
'//fileName: ファイル名/現在のページ、空白のままにしても問題ありません
'//argString: classid=1&tid=16 などのページング パラメータ、ページングに必要なパラメータ ページを入力する必要はありません
'//pindex: 現在のページ番号
'//datacount: レコードの総数
'//pages: 総ページ数
'//showMsg: ページング情報を表示するかどうか、パラメータは true/false
'//showText: ホーム ページ、前のページ、次のページ、最後のページのナビゲーションを表示するかどうか、パラメーターは true/false
'//showNumber: デジタル ページング ナビゲーションを表示するかどうか、パラメータは true/false
'パブリック関数 pageLink(fileName,argString,pindex,datacount,pages,showMsg,showText,showNumber)
パブリック関数 pageLink(fileName,argString,showMsg,showText,showNumber)
'//
if argString<>"" then argString = argString & "&"
showText でも showNumber でもない場合は、showText=true
'//
showMsg の場合
Response.Write("[")
Response.Write("<span style='color:red;'>" & pindex & "</span> ページ")
Response.Write("/分<span style='color:red;'>" & ページ & "</span> ページ")
Response.Write("/Total<span style='color:red;'>" & datacount & "</span> records")
Response.Write("] ")
終了する場合
'//
showText の場合
pindex>1 の場合
Response.Write("<a href='" & fileName & "?" & argString & "page=1'>[ホーム]</a>")
Response.Write(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex - 1 & ''>[前のページ]</a>")
それ以外
Response.Write("[ホーム]")
Response.Write(" ")
Response.Write("[前のページ]")
終了する場合
Response.Write(" ")
pindex<pages の場合
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex + 1 & ''>[次のページ]</a>")
Response.Write(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pages & ''>[最後のページ]</a>")
それ以外
Response.Write("[次のページ]")
Response.Write(" ")
Response.Write("[最後のページ]")
終了する場合
終了する場合
'//
showNumber の場合
Response.Write(" ")
i = 4 から 1 ステップ -1 の場合
if (pindex - i)>0 then
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex - i & ''>" & pindex - i & "</a>")
Response.Write(" ")
終了する場合
次
'//
Response.Write("<span style='color:red;'>" & pindex & "</span>")
'//
i = 1 ~ 4 の場合
if (pindex + i)<=pages then
Response.Write(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex + i & ''>" & pindex + i & "</a>")
終了する場合
次
'//
終了する場合
'//
終了関数
%>