(Vince6799 original)
A paginação em código asp é um pouco problemática. Eu pessoalmente escrevi o código de paginação em duas funções durante o processo de escrita do código. Embora a função não seja perfeita, deve ser suficiente para aplicações gerais.
<%
'A função de paginação é dividida em duas funções
'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) função de cálculo de paginação
'PageList(ListType,url,querry,Separator,ListLink)
função de lista de paginação'função de cálculo de
paginação
'totalrec número total de conjuntos de registros
'msg_per_page O número de registros exibidos em cada página Esta variável precisa ser atribuída antecipadamente ao chamar CalcPage.
'currentpage variável da página atual, você precisa atribuir um valor a esta variável antecipadamente ao chamar CalcPage
'n número total de páginas
'rowcount define o número de registros de dados por página
'Objeto de conjunto de registros PageRs
sub CalcPage(totalrec,msg_per_page,páginaatual,n,rowcount,PageRs)
n=0 'Define o número da página como 0 quando não há registro
se página atual = "" então página atual = 0
'PageRs.EOF e PageRs.bof sem registro
'Não PageRs.EOF ou não PageRs.BOF gravado
se não for PageRs.EOF ou não PageRs.BOF então
totalrec=PageRs.recordcount
PageRs.pagesize=msg_per_page
if totalrec mod msg_per_page = 0 then 'Calcule o número total de páginas, recordcount: o número total de registros de dados
n = totalrecmsg_per_page 'n:Número total de páginas
outro
n = totalrecmsg_per_page+1
terminar se
se não for isnumeric(currentpage) ou currentpage="" então currentpage=1
Se página atual <> "" então
páginaatual = cint(páginaatual)
terminar se
se página atual < 1 então
página atual = 1
terminar se
se página atual*msg_per_page > totalrec e não((página atual-1)*msg_per_page < totalrec) então
páginaatual=1
terminar se
PageRs.absolutepage = currentpage 'absolutepage: define o ponteiro para o início de uma página
rowcount = PageRs.pagesize 'pagesize: Defina o número de registros de dados para cada página
terminar se
final sub
%>
<%
'Função lista de paginação
'url endereço de salto
'consulta? Parâmetros depois?
'Separador separador
'Tipo de paginação ListType
'Type:0 "Primeira página | Página anterior | Próxima página | Última página"
'Tipo:1 "1 | 2 | 3 | 4 | ............| Próxima página"
'Tipo: 2 "Primeira página | Primeiras dez páginas | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Próximas dez páginas | Última página"
'Estilo usado pelos links ListLink
sub PageList(ListType,url,querry,Separator,ListLink)
se Separador="" então Separador="|"
se ListType="" então ListType="0"
selecione o caso ListType
caso "0"
resposta.write""¤tpage&"/"&n&"page "
response.write "Total"&totalrec&" informações "
se página atual <= 1 então
response.write"Primeira página "&Separador&" "
response.write"Página anterior "&Separador&" "
outro
response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Primeira página</a> "&Separator&" "
response.write"<a href="""&url&"?page="¤tpage-1&"&"&querry&""" class="""&ListLink&""">Página anterior</a> "&Separator&"  ; "
terminar se
se página atual = n então
response.write"Próxima página "&Separador&" "
response.write"Última página "
outro
response.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Próxima página</a> "&Separator&"  ; "
response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Última página</a> "
terminar se
caso "1"
se página atual < n então
response.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Próxima página</a> "
outro
response.write"Próxima página "
terminar se
para eu = 1 para n
se cstr(i)=cstr(página atual) então
resposta.write "<b>"&i&"</b>"&" "&Separator&" "
outro
response.write"<a href="""&url&"?page="&i&"&"&querry&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
terminar se
próximo
caso "2"
PageMerCout=10 'O número máximo de páginas que podem ser viradas de cada vez
'Obtém o segmento máximo de número de página do registro
se n mod PageMerCout=0 então
MaxPageFiled=nPageMerCout
outro
MaxPageFiled=nPageMerCout+1
terminar se
'Determina o segmento do número da página onde a página atual está localizada
se página atual mod PageMerCout = 0 então
CurrPageFiled=página atualPageMerCout
outro
CurrPageFiled=página atualPageMerCout+1
terminar se
'Obtém o número máximo de página e o número mínimo de página do segmento de número de página atual
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'Saída "primeira página | primeiras dez páginas |"
se página atual<=1 então
response.write"Primeira página "&Separador&" "
outro
response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Primeira página</a> "&Separator&" "
terminar se
se CurrPageFiled<=1 então
response.write"Primeiras dez páginas "&Separator&" "
outro
response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&querry&""" class="""&ListLink&""">Primeiras dez páginas</a> "&Separator&"  ;"
terminar se
'Exibe o segmento do número da página atual
para i=MinPageNo para MaxPageNo
se eu<=n então
se cstr(i)=cstr(página atual) então
resposta.write "<b>"&i&"</b>"&" "&Separator&" "
outro
resposta.write"<a href="""&url&"?page="&i&"&"&querry&""">"&i&"</a> "&Separator&" "
terminar se
terminar se
próximo
'Saída "próximas dez páginas | última página"
se CurrPageFiled>=MaxPageFiled então
response.write"As próximas dez páginas "&Separator&" "
outro
response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&querry&""" class="""&ListLink&""">As próximas dez páginas</a> "&Separator&" "
terminar se
se página atual>=n então
response.write"Última página "
outro
response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Última página</a> "
terminar se
final selecionar
final sub
%>