免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
當前位置:首頁文章首頁 新聞中心

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

作者:  來源:  發布時間:2011-6-15 15:45:39  點擊:

 這篇文章將給大家分享介紹到通過ASP記錄進行分頁的完美解決方案,希望能給大家帶來幫助或啟發。

簡介

  在 Active Server Pages (ASP) 應用程序中顯示大型記錄集,很可能是您熟悉的一個問題。本文對此問題及其解決方案和示例代碼進行了深入探討,這個示例代碼經過簡單修改,就可以應用于您的具體情況。該示例代碼被設計成服務器端的解決方案,它與瀏覽器無關。另外,我會指出您在設計自己的解決方案時需要考慮的問題。

  問題

  您的查詢返回了一個大型記錄集。需要提供一個簡便方法來瀏覽這些結果,即在每頁上只顯示結果的子集。要有效的完成此項工作,需要對 ActiveX(R) 數據對象 (ADO) 和數據庫如何協同工作有深入的了解。

  解決方案

  如何將您的記錄集分成“頁”,而不用大型的結果?所謂頁,基本上就是您指定應當顯示在一起的許多記錄。例如,如果您的記錄集中有 100 條記錄,可能每頁顯示 10 條記錄。

  ADO 提供了兩種方法,PageSize 和 AbsolutePage。這些方法使您能夠指定每頁要顯示的記錄數,以及將游標定位于一頁的開始。

  打開記錄集之后,基本步驟就是:

  為該記錄集指定 PageSize。它表示每頁要顯示的記錄數。

  指定該記錄集的 AbsolutePage。這將記錄指針移到頁的序列中,給定頁的開始處。

  顯示記錄頁。要完成這一步,您要用設置的 PageSize 次數循環整個記錄集,或者直到到達文件的末尾。

  示例代碼

  下列示例代碼說明了頁面建立過程。借助它,您可以建立自己的解決方案的原型。在您自己的代碼中,確保要完成下列步驟:

  添加錯誤處理。

  添加對查詢返回的記錄數的限制。

  用條件過濾記錄。(如,建立 WHERE 子句)。

  使用存儲過程或視圖。

  一定要通過更改連接字符串和 SQL 語句來修改我的示例代碼,以指向您的數據庫。由于代碼使用 ADO 常數,如 adUserServer,一定要在您的 Global.asa 文件中引用 ADO TypeLibrary,或在 ASP 頁中包括 ADOVBS.INC 文件。請注意,在將項目引用設置為 Microsoft ADO 時,Visual InterDev(R) 會為您自動生成 TypeLibrary 引用。

  注意該示例有兩種方法可以提供導航欄:

  ShowNavBar。 它為用戶提供了帶著記錄計數一起跳到指定頁的方法。為實現這一步,它使用了 RecordCount 和 PageCount 屬性。

  ShowNavBarFast。 該方法不提供跳轉到指定頁的能力,也不提供記錄計數,但可以通過 CacheSize 屬性控制取回的記錄數。

  PageThroughRs.Asp

<%@ Language=VBScript %>
<% Option Explicit %>
<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
  '確保引用 ADO Typelib 或使用 ADOVBS.Inc
  Dim iPageNum, iRowsPerPage

  Main
    Sub Main()
   Dim rst
   Dim sSQL, sConnString

   If Request.QueryString("iPageNum") = "" Then
     iPageNum = 1
   Else
     iPageNum = Request.QueryString("iPageNum")
     iPageNum = CInt(iPageNum)
   End If

   iRowsPerPage = 10


   sConnString = "Provider=SQLOLEDB.1;password=Xyz123;user id=WebUser;" & _
         "Initial Catalog=NorthWind;Data Source=MySQLServer;" & _
         "network=dbmssocn;"

   '下列 SQL 從 SQL 視圖中檢索所有列。
   '要優化性能:
   '- 使用存儲過程、視圖或在 SELECT 中指定列
   '- 使用限制返回的記錄的條件(例如,WHERE 子句)
   sSQL = "SELECT CategoryName, ProductName, QuantityPerUnit,"
   sSQL = sSQL & "UnitsInStock, Discontinued"
      sSQL = sSQL & " FROM [Products By Category]"

   Set rst = GetRecords(sConnString, sSQL)

   WriteTableHeader rst
   WriteTableBody rst, iRowsPerPage, iPageNum
   ShowNavBar rst

   'ShowFastNavBar 方法不使用 RecordCount
   '或 PageCount,所以它重試的記錄數僅等于
   '記錄集的 CacheSize 指定的數量。

   'ShowFastNavBar rst

   CleanUp rst
  End Sub

  Function GetRecords(sConnString, sSQL)
  Dim cnn
  Dim rst

    set cnn = Server.CreateObject("ADODB.CONNECTION")
    cnn.ConnectionString = sConnString
    nn.Open

    Set rst = Server.CreateObject("ADODB.RECORDSET")

    Set rst.ActiveConnection = cnn

     '當記錄集打開時,adUseClient 的 CursorLocation
     ' 將檢索所有的記錄。
     'adUseServer 允許沿用 CacheSize
     rst.CursorLocation = adUseServer

     '在使用服務器端游標時,CacheSize 
     '限制了取回的行數。我們將只抓取正在顯示的
     '的記錄的數目 - iRowsPerPage
     rst.CacheSize = iRowsPerPage

     rst.Open sSQL,,adOpenStatic, adLockReadOnly牋?
     Set GetRecords = rst
    end Function

    Sub WriteTableHeader(rst)
    Dim fld

     Response.Write "<TABLE WIDTH=80% BORDER=1>"
     Response.Write "<TR>"

     '建立表的列標題
      For Each fld in rst.Fields
       Response.Write "<TD><B>" & fld.Name & "</B></TD>"
    Next
    Response.Write "</TR>"
   End Sub

   Sub WriteTableBody(rst, iRowsPerPage, iPageNum)
   Dim iLoop
   Dim fld

首頁 上一頁 [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
免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
主站蜘蛛池模板: 男人天堂网2017| 精品视频国产狼友视频| 欧美精品在线观看| 波多野结衣欲| 韩国交换电影| 好妻子韩国片在线| 中文无码日韩欧免费视频| 我和岳乱妇三级高清电影| 国产一国产二国产三国产四国产五| 人妻va精品va欧美va| 亚洲中字幕| 久久久午夜精品理论片| 一级黄色大片网站| 亚洲fuli在线观看| 国产黄色a| 亚洲一区欧洲一区| 台湾佬中文娱乐在线| 色综合久| 日产精品久久久久久久性色 | 日韩网站| 日本免费新一区二区三区| 欧美18videosex性欧美乱任| 自拍欧美亚洲| 欧美性xxxxx极品娇小| 免费a级毛片无码a| 国产精品久久久久一区二区三区| a级精品国产片在线观看| 中文字幕在线成人免费看| 国产免费一区二区三区不卡 | 国产精品亚洲一区二区三区在线| 五月婷婷伊人网| 没带罩子让他玩儿了一天| 中国午夜性春猛交xxxx| 男人把女人桶爽30分钟应用| 老司机午夜在线视频免费观| 狠狠97人人婷婷五月| 一区二区三区四区电影视频在线观看| 亚洲精品无码专区在线播放| 亚洲av综合av一区| 国产韩国精品一区二区三区| 91情国产l精品国产亚洲区|