/*
Oi,
Adaptar paginação....?
Alguém sabe como eu adapto a paginação abaixo p/ exibir apenas de 15 em 15 itens no rodapé de nºs das páginas?
Pois no meu caso ficam muitos nºs aparecendo assim:
[<< Anterior] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 [Próxima >>]
Gostaria que mostrasse assim:
[<< Anterior] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... [Próxima >>]
Depois os próximo 15:
[<< Anterior] ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... [Próxima >>]
E assim por diante
Veja a minha codificação atual:
<html>
<head>
<title>Exemplo de Páginação - asp101.com</title>
</head>
<!-- #include file="adovbs.inc" -->
<!-- #include file="conn_dbAT.asp" -->
<%
'Variáveis de páginação
Dim iPageSize 'Define quão grande será cada página
Dim iPageCount 'O nº de páginas para se movimentar pelo recordset
Dim iPageCurrent 'A página corrente(atual)
Dim strSQL 'String SQL a ser executada
Dim Rs 'Objeto de recordset
Dim iRecordsShown 'Controlador de loop p/ mostrar exatamente os registros de cada tamanho de página(iPageSize)
Dim I 'Usada no loop dos laços for
Dim Mostrado 'Registro mostrado na tela
'»»Parâmetros passados para paginação
iPageSize = 10 'Aqui pode-se aumentar ou diminuir o nº de registros por página.
'Recupera página p/ apresentar ou seta como default 1 a página atual
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
'»»Parâmetros passados para paginação
codempr = 3
dt_inicialAT = "1/1/03"
dt_finalAT = date
AtSolucionadoAt = "T"
Button = "="
if AtSolucionadoAt = "T" then
Button = "<>"
end if
'SE FOREM USADOS PARÂMETROS NA CONSULTA SQL, SERÁ PRECISO PASSÁ-LOS NA URL
strSQL = "Select ATCod,AtDtAtend,AtHrAtend,AtContato,AtServico,AtSolucionado,AtSolicitacao,AtDescr,AtSolucao,AtAtendente from HT_AU_DAtend WHERE AtCod = '" & codempr & "' AND ATSolucionado " & Button & " '" & AtSolucionadoAT & "' AND AtDtAtend > '" & dt_inicialAT & "' AND AtDtAtend < '" &dt_finalAT & "' ORDER BY AtDtAtend"
'Response.Write "<b>strSQL</b>:<br>" & strSQL & "<BR>"
'Response.End()
' é preciso declarar o recordset dessa forma qdo. usa-se RS.Open
Set Rs = Server.CreateObject("adodb.recordset")
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenForwardOnly 'tipo do cursor
Rs.LockType = adLockOptimistic 'tipo de bloqueio do cursor
Rs.CacheSize = iPageSize
Rs.PageSize = iPageSize
'abre-se o recordset desta forma qdo. precisa de usar seus vários métodos e propridades
Rs.open strSQL, Conexao
'Contador de páginas
iPageCount = Rs.PageCount
'Se houver mais páginas a serem exibidas, a pág. corrente será = ao contador de pág.
If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
'Se não houver mais páginas a serem exibidas, a página corrente será 1
If iPageCurrent < 1 Then iPageCurrent = 1
'Verifique a contagem da página para impedir bombardear quando os resultados zero são retornados!
If iPageCount > 0 Then
' Move para página selecionada.
Rs.AbsolutePage = iPageCurrent
'Inicia saída com uma Página X de N linha
%>
<p>
<font size="3">Página <strong><%= iPageCurrent %></strong>
de <strong><%= iPageCount %></strong></font>
</p>
<%
'Loop através dos registros e saída 1 linha por registro
iRecordsShown = 0
Do While iRecordsShown < iPageSize And Not Rs.EOF
Mostrado = Rs("AtContato") & ""
Mostrado = Replace(Mostrado,Chr(0),"")
Response.Write "<b>Nome:</b> " & Mostrado & "<br>"
' Incrementa o nº de registros apresentados
iRecordsShown = iRecordsShown + 1
'Não esquecer de mover p/ próximo registro!
Rs.MoveNext
Loop
End If
Response.Write "<br><br>"
'Mostra links anterior, nºs de página e próxima
If iPageCurrent > 1 Then
'SE FOREM USADOS PARÂMETROS NA CONSULTA SQL, SERÁ PRECISO PASSÁ-LOS NA URL
'pegá-los depois com Request.QueryString("variável passada")
'ASSIM:
'obs.: FOI TROCADO O (%) POR (#) NO EXEMPLO P/ NÃO ESTRAGAR OS COMENTÁRIOS
'db_paging.asp?page=<#= iPageCurrent - 1 #>&txtCodEmp=<#=CodEmpr#>&Atsolucionado=<#=AtsolucionadoAT#>
'Mostra link p/ pág. anterior
%>
<a href="db_paging.asp?page=<%= iPageCurrent - 1 %>">[<< Anterior]</a>
<%
End If
'Apresenta nº de páginas
For I = 1 To iPageCount
'Só montará link c/ o Nº da pág. se não for a pág. corrente
If I = iPageCurrent Then
%>
<%= I %>
<%
Else
%>
<a href="db_paging.asp?page=<%= I %>"><%= I %></a>
<%
End If
Next
'Mostra link p/ pág. posterior
If iPageCurrent < iPageCount Then
%>
<a href="db_paging.asp?page=<%= iPageCurrent + 1 %>">[Próxima >>]</a>
<%
End If
%>
</html>
-----------------------------
Grato,
*/