萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> ASP 程式設計

ASP 經典分頁技術全解析:七種實現方式與 Recordset 分頁屬性深度解析

前言

大量資料分頁顯示是 Web 開發核心需求。ASP 時代利用 ADO `Recordset` 內建分頁屬性 (`PageSize`、`PageCount`、`AbsolutePage`),可實作多種分頁策略。本文系統整理七大類方法,並深度解析 `Recordset` 分頁屬性運作原理。

Recordset 分頁核心屬性

屬性/方法說明關鍵備註
PageSize每頁記錄數設定後自動計算 PageCount
PageCount總頁數 (唯讀)依 PageSize 與 RecordCount 計算
AbsolutePage當前頁碼 (1-based,可讀寫)設定即跳轉至該頁首筆
AbsolutePosition當前記錄在 Recordset 中的序號 (1-based)受 Filter 影響
RecordCount總記錄數需支援書籤的游標 (Keyset/Static)
Move相對移動記錄指標Move 0 可刷新當前記錄
BOF/EOF檢測首/尾記錄分頁邊界判斷依據

七大分頁實現分類

第一類:純 ASP + QueryString 參數傳遞 (最基礎、最通用)

  • 方法 1:參數直接代入法 — `List.asp?Page=3`,`AbsolutePage = CLng(Request("Page"))`。
  • 方法 2:Session 記錄當前頁 — 頁碼存 Session,連結不帶參數,返回時恢復。適合多條件篩選頁面。

核心代碼 (方法 1):

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM Products", conn, 1, 1  ' adOpenKeyset, adLockReadOnly

rs.PageSize = 10
Dim curPage : curPage = CLng(Request.QueryString("Page"))
If curPage < 1 Then curPage = 1
If curPage > rs.PageCount Then curPage = rs.PageCount
rs.AbsolutePage = curPage

' 輸出導航
If curPage > 1 Then
    Response.Write "首頁 "
    Response.Write "上一頁 "
End If
Response.Write " 第 " & curPage & " / " & rs.PageCount & " 頁 "
If curPage < rs.PageCount Then
    Response.Write "下一頁 "
    Response.Write "末頁"
End If

' 輸出當頁資料 (最多 PageSize 筆)
Dim i : i = 0
Do While Not rs.EOF And i < rs.PageSize
    Response.Write rs("Name") & "
" rs.MoveNext i = i + 1 Loop %>

第二類:SOM (Script Object Model) + DHTML 資料繫結 (IE 專用、客戶端分頁)