2011-12-09 95 views
0

我在使用asp尋呼時遇到了一些麻煩。它能夠在每個頁面上顯示6條記錄。但是,當我轉到第二頁時,它會在每個不同的頁面上顯示相同的6條記錄。 以下是我的代碼。有什麼建議麼?在傳統ASP中尋呼

Dim iPageSize,iPageCount , iPageCurrent , strOrderBy,strSQL,iRecordsShown,I 
    iPageSize = 6 
    set registerRS=server.CreateObject("ADODB.recordset") 
    registerRS.PageSize = iPageSize 
    ' Retrieve page to show or default to 1 
    If Request.QueryString("page") = "" Then 
     iPageCurrent = 1 
    Else 
     iPageCurrent = CInt(Request.QueryString("page")) 
    End If 
    qry="SELECT * FROM "dbo.CustomerOrders;" 

    registerRS.CacheSize = iPageSize 
    registerRS.open qry,ObjConn,3 
    iPageCount = registerRS.PageCount 
    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount 
    If iPageCurrent < 1 Then iPageCurrent = 1 
    If iPageCount = 0 Then 
     Response.Write "No records found!" 
    Else 
     registerRS.AbsolutePage = iPageCurrent 
    end if 
    %> 
     <p> 
     <font size="+1">Page <strong><%= iPageCurrent %></strong> 
     of <strong><%= iPageCount %></strong></font> 
     </p> 
    <% 
    x=registerRS.recordcount 
    if registerRS.recordcount > 0 Then 
    registerRS.movefirst 
    End If 
     Do While iRecordsShown < iPageSize And Not registerRS.EOF 
       counter=counter+1 
       if counter=41 then 
        counter=0 
        counter=counter+1 
       end if 
       r = r + 1 
       If r = 1 then 
        Response.write "<tr>" 
       End if 
       %> 
        <td> 
         <%=registerRS.Fields("Address")%> <br />>     
         </td>   
     <%  
      If r = 2 then 
      Response.write "</tr>" 
      End if 
      If r = 3 then r = 1 
      ' Increment the number of records we've shown 
       iRecordsShown = iRecordsShown + 1 
      registerRS.movenext 
      loop    
     %> 
</table> 
<table width=90%> 
    <tr> 
     <td> 
<%   
    If iPageCurrent > 1 Then   
%> 
    <a href="add.asp?page=<%= iPageCurrent - 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[&lt;&lt; Prev]</a> 
<% 
    End If 
    ' You can also show page numbers: 
     For I = 1 To iPageCount 
     If I = iPageCurrent Then 
%> 
<%= I %> 
<%Else%> 
    <a href="add.asp?page=<%= I %>&SchoolId=<%=registerRS.Fields("Add")%>"><%= I %></a>  
<% 
    End If 
    Next 'I 
    If iPageCurrent < iPageCount Then 
%> 
    <a href="add.asp?page=<%= iPageCurrent + 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[Next &gt;&gt;]</a> 
<% 
    registerRS.close 
    set registerRS=nothing 
    End If 
    end sub 
%> 
+2

老實說,我甚至無法弄清楚你的代碼在哪裏,你認爲你是「分頁」。分頁意味着URL中有一個參數可確定要顯示哪個頁面,並根據該參數的值顯示不同的記錄。 –

+0

這比PHP更糟糕...... –

回答

2

執行網頁上查看源代碼,並驗證這行代碼:

<a href="add.asp?page=<%= iPageCurrent + 1 %>&SchoolId=<%=registerRS.Fields("Add")%>">[Next &gt;&gt;]</a> 

正在產生正確的結果。如果沒有,那麼你需要回溯到找出正確的頁面引用沒有被生成的地方。

將您的代碼與此示例進行比較,以瞭解可能的錯誤來源。

http://www.asp101.com/samples/viewasp.asp?file=db_paging.asp

我做了一些測試,我看到一對夫婦的事情,可能會導致問題。

1]您需要在Do-Loop之前初始化iRecordsShown = 0。

2]您也試圖在循環之後將數據庫值檢索到鏈接中。這可能不會奏效,因爲循環已經到了那段時間的記錄末尾。您需要在達到循環結束之前捕獲數據庫值。

否則它適用於我。

+0

html顯示了它顯示的第7條記錄。任何想法如何使它在表中顯示? – JohnDoe4136

+0

您的鏈接指向一個名爲「add.asp」的文件是否列出值表的正確文件?它是包含您提供的示例代碼的文件的名稱? – Dee

+0

是的。這是我的代碼所在的文件名。 – JohnDoe4136

1

如果記錄數大於零(應該已經),則以下條件塊將光標移動到第一條記錄。然後循環從第一條記錄開始,而不影響頁碼。這是不明智的,刪除該塊。

if registerRS.recordcount > 0 Then 
registerRS.movefirst 
End If