Пейджинг в Classic ASP - PullRequest
       2

Пейджинг в Classic ASP

0 голосов
/ 09 декабря 2011

У меня возникли некоторые проблемы с подкачкой asp.Это в состоянии показать 6 записей на каждой странице.Однако, когда я перехожу на вторую страницу, на каждой странице отображаются одни и те же 6 записей.Ниже мой код.Есть предложения?

 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 ]

2 голосов
/ 09 декабря 2011

Сделайте просмотр источника на веб-странице и убедитесь, что эта строка кода:

<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] Вам нужно инициализировать iRecordsShown = 0 перед циклом выполнения.

2] Вы также пытаетесь извлечь значения базы данных в ваши ссылки после цикла. Это вряд ли сработает, потому что к тому времени цикл уже достиг конца записи. Вам нужно будет захватить значения базы данных до того, как будет достигнут конец цикла.

В противном случае это сработало для меня.

1 голос
/ 14 декабря 2011

Следующий блок условий перемещает курсор к первой записи, если количество записей больше нуля (должно быть уже).И затем цикл начинается с первой записи, не затрагивая номер страницы.Это не имеет смысла, уберите этот блок.

if registerRS.recordcount > 0 Then
registerRS.movefirst
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...