Saturday, April 26, 2008

Phân trang trong ASP

Phân trang RecordSet:

Khi select => cho kết quả 1 bảng gồm nhiều hàng. Tuy nhiên mỗi lần chỉ muốn sử dụng một vài hàng, ví dụ: bảng 50 hàng, mỗi lần hiển thị 10 hàng => sử dụng kỹ thuật paging. ADO cung cấp các thuộc tính của Recordset như: PageSize, PageCount, AbsolutePage.
PageCount: số trang, PageSize: số hàng.
ở đây ta dùng biến session CurrentPage để ghi nhận trang hiện hành.

<% Select Case Request.QueryString("Direction")
Case "" 'Null
Session("CurrentPage") = 1
Case "Next"
Session("CurrentPage") = Session("CurrentPage") + 1
Case "Previous"
Session("CurrentPage") = Session("CurrentPage") - 1
End Select %>

Chú ý: Request.QueryString("Direction") <=> QueryString("Direction")

Tiến hành kết nối truy vấn dữ liệu

<% const adOpenKeySet = 1 dim objConnection [i]'không cần khai báo cũng được[/i] dim objRexordset [i]'không cần khai báo cũng được[/i] Set objConnection = Server.CreateObject("ADODB.Connection") Set ObjConnection.Open "Biblio", "", "" Dim strSQL StrSQL = "Select * from Authors" Set objRecordSet = Server.CreateObject("ADODB.RecordSet") ObjRecordSet.PageSize = 10 ObjRecordSet.Open strSQL, objConnection, adOpenKeyset ObjRecordSet.AbsolutePage = CLng(Session("CurrentPage")) %>

Page = <%=Session("CurrentPage") %> of <%=ObjRecordSet.PageCount>

<% Dim i For i = 1 to ObjRecordSet.PageSize %>
<% = ObjRecordSet("Authors") %>
...
<% ObjRecordSet.MoveNext Next %>
<% if CLng(Session("CurrentPage")) <>
A HREF = "paging.asp?Direction=Next">Next Page
<%Enf if%>
<% If CLng(Session("CurrentPage")) > 1 then %>
A Href = "paging.asp?Direction=Previous">Previous Page
<%Enf if%>
<% ObjRecordSet.close ObjConnection.close Set objRecordSet = nothing Set objConnection = nothing %>

0 Comments:

Post a Comment