當前位置:首頁文章首頁 新聞中心

通過ASP記錄進行分頁的完美解決方案

作者:  來源:  發(fā)布時間: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