Đối t−ợng RecordSet cung cấp 3 thuộc tính quan trọng sau để sử dụng phân trang:
PageSize: Kích th−ớc bản ghi trong một trang PageCount: Tổng số trang RecordSet truy vấn đ−ợc
AbsolutePage: Chỉ định trang hiện hành đang cần đ−ợc đọc
Để RecordSet có khả năng phân trang, cần thiết lập thêm tham số cho RecordSet tr−ớc khi thực hiện truy vấn:
Rs.CursorLocation=3 ‘ Có thể sử dụng hằng adUseClient Rs.PageSize=15 ‘ 15 bản ghi trong một trang
Tiết theo mở đối t−ợng RecordSet truy vấn dữ liệu với tuỳ chọn là các hằng adOpenForwardOnly(0), adLockReadOnly (1) truy cho ph−ơng thức Open nh− sau:
Rs.open sqlStr, Conn, 0,1
Công việc sau cùng là định vị trang thông qua thuộc tính AbsolutePage. Ta l−u lại vị trí hiện hành của trang dữ liệu thông qua giá trị chứa trong thẻ <input hidden>. Giá trị này sẽ đ−ợc chuyển về trình chủ mỗi khi ng−ời dùng kích vào.
Xét ví dụ sau:
<%sqlStr="SELECT * FROM Products " ' page navigate session here ... Dim lCurrentPage
Dim lPageCount
lCurrentPage = CLng(Request("page")) If lCurrentPage < 1 Then
lCurrentPage = 1
End If
rs.CursorLocation = 3 rs.PageSize = 15
rs.Open sqlStr, conn, 0, 1 'Const adOpenForwardOnly=0, adLockReadOnly = 1
lPageCount = rs.PageCount
If lCurrentPage > lPageCount Then lCurrentPage = lPageCount
End If
if not rs.eof then
rs.AbsolutePage = lCurrentPage
end if
call ShowPageNavigation(lCurrentPage,lPageCount)
Do While rs.AbsolutePage = lCurrentPage And Not rs.Eof Response.write rs("ProductName")
rs.movenext loop %>
<form name="viewFrm" >
<input type=hidden name=page > </form>
<%
Sub ShowPageNavigation (lCurrentPage,lPageCount) If lCurrentPage <> 1 AND lCurrentPage <> 0 Then %>
<A HREF="javascript:setValue('<%= lCurrentPage - 1 %>'); ">Previous
<% Else %> Previous <% End If%>
<%If lCurrentPage < lPageCount Then%>
<A HREF="javascript:setValue('<%= lCurrentPage + 1%>'); ">Next <% Else %> Next <% End If%><BR> Page <B> <%= lCurrentPage%> </B> <%= lPageCount%> <%End Sub %> <script language=javascript> function setValue(page){
viewFrm.page.value= page; viewFrm.submit();
} </script>