先看下常用的分页代码:
读取记录部分: 程序代码
page=request.querystring("page") page值为接受值
rs.PageSize = 10 每页显示记录数
if Not IsEmpty(page) then 如果page已经初始化...
if Not IsNumeric(page) then 判断page值是否为数字
page=1
else
Page = cint(page) 接收page并化为数字型赋给page变量
end if
if Page > rs.PageCount then 如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount 设置当前显示页等于最后页
elseif Page <= 0 then 如果page小于等于0
rs.AbsolutePage = 1 设置当前显示页等于第一页
else
rs.AbsolutePage = Page 如果大于零,显示当前页等于接收的页数
end if
else
rs.AbsolutePage=1
end if
Page = rs.AbsolutePage
For i = 1 to rs.PageSize
if rs.EOF then exit for
分页程序:
程序代码
function pagination(pagecount,pagesize,page,resultcount) 通用分页程序
Dim query, a, x, temp
action = "http://" & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("SCRIPT_NAME")
query = Split(Request.ServerVariables("QUERY_STRING"), "&")
For Each x In query
a = Split(x, "=")
If StrComp(a(0), "page", vbTextCompare) <> 0 Then
temp = temp & a(0) & "=" & a(1) & "&"
End If
Next
Response.Write("<form method=get onsubmit=""document.location = " & action & "?" & temp & "Page=+this.page.value;return false;"">")
if page<=1 then
Response.Write ("[首页] [上一页] ")
else
Response.Write("[<a href=" & action & "?" & temp & "Page=1>首页</a>] ")
Response.Write("[<a href=" & action & "?" & temp & "Page=" & (Page-1) & ">上一页</a>] ")
end if
if page>=pagecount then
Response.Write ("[下一页] [尾页]")
else
Response.Write("[<a href=" & action & "?" & temp & "Page=" & (Page+1) & ">下一页</a>] ")
Response.Write("[<a href=" & action & "?" & temp & "Page=" & pagecount & ">尾页</a>]")
end if
Response.Write("[页次:<font color=red>" & page & "</font>/" & pageCount)
Response.Write("] [共" & resultcount & "条 <font color=red>"& pagesize & "</font>条/页]")
Response.Write(" 转到" & "<input name=page size=4 value=" & page & ">" & "页<input type=submit value=go></form>")
End function
要分页的地方直接调用:
程序代码
<% call pagination(rs.PageCount,rs.pagesize,page,rs.RecordCount) %>
但如果是搜索结果,参数由表单post方式传递过来,分页正常,第一页显示没有问题,但如果点击下一页就会有问题,因为不存在表单了,是直接get,表单post过来的参数都没有了,所以会显示出所有的记录。
最后终于想到办法,用session把那些参数都给保存下来,但新的问题出现了,第一次搜索选择了很多条件,如果又返回到搜索表单重新选择条件搜索,会有之前遗留的session影响搜索结果,所以还要在显示搜索结果显示页面读取数据之前先清空session,具体办法就是在搜索表单中加入隐藏域,显示结果前先判断是否有这样一个隐藏域的值传递,如果有,就清空session,重新生成session,至此,问题搞定。
写的时候代码太乱,就不整理发上来了。本人懒哇~