当前位置:首页文章首页 新闻中心

通过ASP记录进行分页的完美解决方案

作者:  来源:  发布时间:2011-6-15 15:45:39  点击:
   iLoop = 1

   rst.PageSize = iRowsPerPage
   rst.AbsolutePage = iPageNum

   '写出记录的当前页
   Do While (Not rst.EOF) and (iLoop <= iRowsPerPage)
     Response.Write "<TR>"
      For Each fld in rst.Fields
       Response.Write "<TD>" & fld.value & "</TD>"
        Next
         iLoop = iLoop + 1
         rst.MoveNext
         Response.Write "</TR>"
     Loop
     Response.Write "</TABLE>"
   End Sub

   Sub ShowNavBar(rst)
   Dim iPageCount
   Dim iLoop
   Dim sScriptName

    '本版本提供了更丰富的用户导航,但是
    '依赖于 RecordCount 和 PageCount,
    '它抵消了为服务器端游标
    '指定 CacheSize 的好处。

    Response.Write "<BR><BR>"
    sScriptName = Request.ServerVariables("SCRIPT_NAME")

    If iPageNum > 1 Then
      Response.Write " <a href=" & sScriptName & "?iPageNum="
      Response.Write (iPageNum -1) & "><< Previous</a>"
    End If

    iPageCount = rst.PageCount
    Do Until iLoop > iPageCount
    f iLoop = iPageNum Then
       Response.Write " <B>" & CStr(iLoop) & "</B>"
      Else
       Response.Write " <a href=" & sScriptName & "?iPageNum=" & _
       Cstr(iLoop) & ">" & iLoop & "</a>"
       End If
       iLoop = iLoop + 1
    Loop

    If Not rst.EOF Then
     Response.Write " <a href=" & sScriptName & "?iPageNum="
     Response.Write (iPageNum +1) & "> Next >></a><BR>"
    Else
       Response.Write "<BR>"
    End If

    Response.Write "Page " & iPageNum & " of " & iPageCount & "<BR>"
    Response.Write rst.RecordCount & " Records" 牋?
   End Sub

   Sub ShowFastNavBar(rst)
   Dim iPageCount
   Dim iLoop
   Dim sScriptName

     '在指定 CacheSize 和使用服务器端游标时,
     '该方法特别有效,因为它不使用 RecordCount
     '和 PageCount。需要用户具有经验。

     Response.Write "<BR><BR>"
     sScriptName = Request.ServerVariables("SCRIPT_NAME")

     If iPageNum > 1 Then
      Response.Write " <a href=" & sScriptName & "?iPageNum="
      Response.Write (iPageNum -1) & "><< Previous</a>"
    End If

    If Not rst.EOF Then
      Response.Write " <a href=" & sScriptName & "?iPageNum="
      Response.Write (iPageNum +1) & "> Next >></a><BR>"
    Else
      Response.Write "<BR>"
    End If

    Response.Write "Page " & iPageNum

   End Sub

   Sub CleanUp(rst)
     If Not rst Is Nothing then
       If rst.state = adStateOpen then rst.close
       set rst = nothing
     End If
   End Sub

</SCRIPT>

  分析

  设计分页解决方案时,需注意的几个问题:

  游标定位问题。如果使用客户端游标,每次打开记录集时,将读取所有的记录。因此,由于读取了所有的记录,以后访问 RecordCount 或 PageCount 属性时将很快。如果您使用服务器端游标,将只检索需要的记录。您可以通过 CacheSize 属性指定一次要读取的记录数来提高性能。然而,如果您使用服务器端游标,和 RecordCount 或 PageCount 属性,则将读取所有的记录,性能得不到提高。必须在具有更多信息和更丰富导航的用户界面,与检索所有记录的性能影响之间折衷。使用服务器端游标时,CursorType 属性必须是 adOpenStatic 或 adOpenKeyset,才能使用分页。分页并非总是最好的用户页面。它可能仅适用于用户正从搜索引擎扫描结果或浏览产品目录的情况。

首页 上一页 [1] [2] [3]  下一页 尾页

相关软件

相关文章

文章评论

栏目导航

本类热门

本类推荐

本站热门

本站推荐

软件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z