當(dāng)前位置:首頁(yè)文章首頁(yè) 新聞中心

通過ASP記錄進(jìn)行分頁(yè)的完美解決方案

作者:  來(lái)源:  發(fā)布時(shí)間:2011-6-15 15:45:39  點(diǎn)擊:
   iLoop = 1

   rst.PageSize = iRowsPerPage
   rst.AbsolutePage = iPageNum

   '寫出記錄的當(dāng)前頁(yè)
   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

    '本版本提供了更豐富的用戶導(dǎo)航,但是
    '依賴于 RecordCount 和 PageCount,
    '它抵消了為服務(wù)器端游標(biāo)
    '指定 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 和使用服務(wù)器端游標(biāo)時(shí),
     '該方法特別有效,因?yàn)樗皇褂?RecordCount
     '和 PageCount。需要用戶具有經(jīng)驗(yàn)。

     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>

  分析

  設(shè)計(jì)分頁(yè)解決方案時(shí),需注意的幾個(gè)問題:

  游標(biāo)定位問題。如果使用客戶端游標(biāo),每次打開記錄集時(shí),將讀取所有的記錄。因此,由于讀取了所有的記錄,以后訪問 RecordCount 或 PageCount 屬性時(shí)將很快。如果您使用服務(wù)器端游標(biāo),將只檢索需要的記錄。您可以通過 CacheSize 屬性指定一次要讀取的記錄數(shù)來(lái)提高性能。然而,如果您使用服務(wù)器端游標(biāo),和 RecordCount 或 PageCount 屬性,則將讀取所有的記錄,性能得不到提高。必須在具有更多信息和更豐富導(dǎo)航的用戶界面,與檢索所有記錄的性能影響之間折衷。使用服務(wù)器端游標(biāo)時(shí),CursorType 屬性必須是 adOpenStatic 或 adOpenKeyset,才能使用分頁(yè)。分頁(yè)并非總是最好的用戶頁(yè)面。它可能僅適用于用戶正從搜索引擎掃描結(jié)果或?yàn)g覽產(chǎn)品目錄的情況。

相關(guān)軟件

相關(guān)文章

文章評(píng)論

欄目導(dǎo)航

本類熱門

本類推薦

本站熱門

本站推薦

軟件按字母排列: 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