我的asp分页遇到了一些问题。它能够在每个页面上显示6条记录。但是,当我转到第二页时,它在每个不同的页面上显示相同的6条记录。 以下是我的代码。有什么建议吗?
Dim iPageSize,iPageCount , iPageCurrent , strOrderBy,strSQL,iRecordsShown,I
iPageSize = 6
set registerRS=server.CreateObject("ADODB.recordset")
registerRS.PageSize = iPageSize
' Retrieve page to show or default to 1
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
qry="SELECT * FROM "dbo.CustomerOrders;"
registerRS.CacheSize = iPageSize
registerRS.open qry,ObjConn,3
iPageCount = registerRS.PageCount
If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
If iPageCurrent < 1 Then iPageCurrent = 1
If iPageCount = 0 Then
Response.Write "No records found!"
Else
registerRS.AbsolutePage = iPageCurrent
end if
%>
<p>
<font size="+1">Page <strong><%= iPageCurrent %></strong>
of <strong><%= iPageCount %></strong></font>
</p>
<%
x=registerRS.recordcount
if registerRS.recordcount > 0 Then
registerRS.movefirst
End If
Do While iRecordsShown < iPageSize And Not registerRS.EOF
counter=counter+1
if counter=41 then
counter=0
counter=counter+1
end if
r = r + 1
If r = 1 then
Response.write "<tr>"
End if
%>
<td>
<%=registerRS.Fields("Address")%> <br />>
</td>
<%
If r = 2 then
Response.write "</tr>"
End if
If r = 3 then r = 1
' Increment the number of records we've shown
iRecordsShown = iRecordsShown + 1
registerRS.movenext
loop
%>
</table>
<table width=90%>
<tr>
<td>
<%
If iPageCurrent > 1 Then
%>
<a href="add.asp?page=<%= iPageCurrent - 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[<< Prev]</a>
<%
End If
' You can also show page numbers:
For I = 1 To iPageCount
If I = iPageCurrent Then
%>
<%= I %>
<%Else%>
<a href="add.asp?page=<%= I %>&SchoolId=<%=registerRS.Fields("Add")%>"><%= I %></a>
<%
End If
Next 'I
If iPageCurrent < iPageCount Then
%>
<a href="add.asp?page=<%= iPageCurrent + 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[Next >>]</a>
<%
registerRS.close
set registerRS=nothing
End If
end sub
%>
答案 0 :(得分:2)
在网页上执行查看源并验证此行代码:
<a href="add.asp?page=<%= iPageCurrent + 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[Next >>]</a>
正在产生正确的结果。如果没有,那么您将需要回溯以找出未生成正确页面引用的位置。
将您的代码与此示例进行比较,以了解可能的错误来源。
http://www.asp101.com/samples/viewasp.asp?file=db_paging.asp
我做了一些测试,我看到了一些可能导致问题的事情。
1]您需要在Do-Loop之前初始化iRecordsShown = 0。
2]您还尝试在循环后将数据库值检索到链接中。这可能不会起作用,因为到那时循环已经到达记录的末尾。您需要在到达循环结束之前捕获数据库值。
否则它对我有用。
答案 1 :(得分:1)
如果记录数大于零(应该已经存在),则以下条件块将光标移动到第一个记录。然后循环从第一个记录开始,而不会影响页码。这是不明智的,删除该块。
if registerRS.recordcount > 0 Then
registerRS.movefirst
End If