Esta paginação usa o cursor 0, que é Rs.Open Sql,Conn,0,1. Mas não parece muito mais rápido, 10
O tempo de paginação para 10.000 dados é superior a 300 milissegundos.
<%
Página da turma
CurrPage privada
Página privadaN
URLString privado
TempStr privado
Informações de erro privadas
PrivateIsErr
Registro Total Privado
Página Total Privada
Páginas públicas
privadas TempA(11)
TempB Privado(8)
'------------------------------------------------ - ---------
Subclasse Privada_Initialize()
CurrPage=1'//A página atual é exibida como a primeira página por padrão
PageN=10'//Por padrão, 10 dados são exibidos em cada página
UrlStr="#"
TempStr=""
ErrInfo="ErrInfo:"
ÉErr=Falso
Finalizar sub
Subclasse Privada_Terminate()
Se IsObject(PageRs) então
PageRs.Fechar
Definir PageRs=Nada
Terminar se
Apagar TempA
Apagar TempB
Finalizar sub
'------------------------------------------------ - ---------
'//Obtém o número da página atual
Propriedade pública Let CurrentPage(Val)
CurrPage=Val
Fim da propriedade
Propriedade Pública Obter CurrentPage()
PáginaAtual=PáginaAtual
Fim da propriedade
'//Obtém o número de itens exibidos em cada página
Propriedade pública Let PageNum(Val)
PáginaN=Val
Fim da propriedade
Propriedade Pública Obter PageNum()
NumPágina=PáginaN
Fim da propriedade
'//Obter URL
Propriedade pública Let Url (Val)
UrlStr=Val
Fim da propriedade
URL de obtenção de propriedade pública()
Url=UrlStr
Fim da propriedade
'//Pegue o modelo
Propriedade Pública Let Temp(Val)
TempStr=Val
Fim da propriedade
Propriedade Pública Obter Temp()
Temp=TempStr
Fim da propriedade
'------------------------------------------------ - ----------
Subexecutivo público (Sql,ConnObj)
Em caso de erro, retomar o próximo
Definir PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'Usar cursores do lado do cliente pode melhorar a eficiência
PageRs.PageSize = PageN 'Define o número de registros exibidos em cada página do conjunto de registros de paginação
PageRs.Open Sql,ConnObj,0,1
Se Err.Number<>0 Então
Err.Limpar
PageRs.Fechar
Definir PageRs=Nada
ErrInfo=ErrInfo&"Erro ao criar ou abrir o conjunto de registros..."
ÉErr=Verdadeiro
Resposta.Write ErrInfo
Resposta.Fim
Terminar se
TotalRecord=PageRs.RecordCount'//E se for 0?
Se RegistroTotal>=1 Então
'------------------------------------------------ - --------------------------começar
'//Calcule o número total de páginas, Ps, por que não usar PageRs.PageCount?
'Se TotalRecord Mod PageN = 0 Então
'TotalPage=PageRs.RecordCountPageN
'Outro
'TotalPage=PageRs.RecordCountPageN
'TotalPage=Abs(Int(TotalPage))
'Fim se
TotalPage=PageRs.PageCount
'//Processa o número da página recebida atualmente, o padrão é 1, então se não for um tipo numérico, será 1
Se IsNumeric(CurrPage) então
CurrPage=CLNg(CurrPage)
Se CurrPage<1 Então CurrPage=1
Se CurrPage>TotalPage Então CurrPage=TotalPage
Outro
'//Dim M:M="":IsNumeric(M)=True
PáginaAtual=1
Terminar se
'------------------------------------------------ - -------------------------Terminar
Outro
TotalPágina=0
PáginaAtual=1
Terminar se
'//
PageRs.AbsolutePage = CurrPage 'absolutepage: define o ponteiro para o início de uma página
PageRs.PageSize=PáginaN
Finalizar sub
Subinicialização privada()
'TempA privada(10)
TempA(1)="{N1}" '//Página inicial
TempA(2)="{N2}"'//Página anterior
TempA(3)="{N3}"'//Próxima página
TempA(4)="{N4}"'//Última página
TempA(5)="{N5}"'//Número da página atual
TempA(6)="{N6}"'//Número total de páginas
TempA(7)="{N7}"'//Número de itens por página
TempA(8)="{N8}"'//Número total de artigos
TempA(9)="{L}"'//Início do rótulo do loop
TempA(10)="{N}"'//Rótulo único em loop: número da página
TempA(11)="{L/}"'//Rótulo de fim do loop
'TempB privado(8)
TempB(1)="Casa"
TempB(2)="Página anterior"
TempB(3)="Próxima página"
TempB(4)="Última página"
TempB(5)=CurrPage'//Número da página atual
TempB(6)=TotalPage'//Número total de páginas
TempB(7)=PáginaN'//Número de itens por página
TempB(8)=TotalRecord'//Número total de artigos
Finalizar sub
Subshow público (estilo)
Se IsErr = Verdadeiro então
Resposta.Write ErrInfo
Sair do sub
Terminar se
chamar Init()
Selecione o estilo do caso
Caso 1
Resposta.Write EstiloA()
Caso 2
Resposta.Write EstiloB()
Caso 3
Resposta.Write EstiloC()
Caso 4
Resposta.Write StyleD()
Outro caso
ErrInfo=ErrInfo&"O estilo atual não existe..."
Response.Write ErrInfo
Finalizar seleção
Finalizar sub
Função Pública ShowStyle(Estilo)
Se IsErr = Verdadeiro então
ShowStyle=ErrInfo
Função de saída
Terminar se
chamar Init()
Selecione o estilo do caso
Caso 1
ShowStyle=EstiloA()
Caso 2
ShowStyle=EstiloB()
Outro caso
ErrInfo=ErrInfo&"O estilo atual não existe..."
ShowStyle=ErrInfo
Finalizar seleção
Função final
Função privada StyleA()
'Página inicial Página anterior Próxima página Última página Esta página é a página 1/20, um total de 20 páginas, 10 artigos por página e um total de 200 artigos.
'//Exemplo de paginação: [Home] [Página anterior] [Próxima página] [Última página] [Página: 4/5 páginas] [Total 86 artigos/20 artigos/página] Ir para: _ página
'//Tag: {N1} {N2} {N3} {N4} || Total: {N8} registros {N6} página atualmente é de {N5} página {N7} registros por página
Se IsEmpty(TempStr) então
ErrInfo=ErrInfo&"O modelo está vazio..."
EstiloB = ErrInfo
Função de saída
Terminar se
DiM
Se TotalPage>1 então
Se CurrPage>1 então
M="<a href='"&UrlStr&"Page=1'>"&"Home"&"</a>"
TempStr=Substituir(TempStr,"{N1}",M)
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"Página anterior"&"</a>"
TempStr=Substituir(TempStr,"{N2}",M)
Se CurrPage<TotalPage então
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Próxima página"&"</a>"
TempStr=Substituir(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Última página"&"</a>"
TempStr=Substituir(TempStr,"{N4}",M)
Outro
TempStr=Replace(TempStr,"{N3}","Próxima página")
TempStr=Replace(TempStr,"{N4}","Última página")
Terminar se
Outro
TempStr=Replace(TempStr,"{N1}","Página inicial")
TempStr=Replace(TempStr,"{N2}","Página anterior")
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Próxima página"&"</a>"
TempStr=Substituir(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Última página"&"</a>"
TempStr=Substituir(TempStr,"{N4}",M)
Terminar se
Outro
TempStr=Replace(TempStr,"{N1}","Página inicial")
TempStr=Replace(TempStr,"{N2}","Página anterior")
TempStr=Replace(TempStr,"{N3}","Próxima página")
TempStr=Replace(TempStr,"{N4}","Última página")
Terminar se
T=TempStr
T=Substituir(T,"{N8}",RegistroTotal)
T=Substituir(T,"{N6}",TotalPage)
T=Substituir(T,"{N5}",PáginaAtual)
T=Substituir(T,"{N7}",PáginaN)
TempStr=T
EstiloA=TempStr
Função final
Função privada StyleB()
'Página inicial|< 1 2 3 4 5 6 7 >| Última página
'//Tag:{N1} {N2} {L}{N}{L/}{N3}{N4}
Se IsEmpty(TempStr) então
ErrInfo=ErrInfo&"O modelo está vazio..."
EstiloB = ErrInfo
Função de saída
Terminar se
Dim ForceNum,BackNum'//O número exibido na frente e atrás da página atual
ForçaNum=5
VoltarNum=4
DiM
'//primeira página
M="<a href='"&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=Substituir(TempStr,"{N1}",M)
'//Última página
M="<a href='"&UrlStr&"Page="&TempB(6)&"'>"&TempB(4)&"</a>"
TempStr=Substituir(TempStr,"{N4}",M)
'//página anterior
M="|<"
Se CurrPage-1>=1 então
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
Terminar se
TempStr=Substituir(TempStr,"{N2}",M)
'//Próxima página
M=">|"
Se CurrPage+1<=TotalPage Então
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
Terminar se
TempStr=Substituir(TempStr,"{N3}",M)
'//Remove o rótulo do loop
Diminuir N1, N2, N3, N4, N5, N6
Se InStr(TempStr,"{L}")>0 Então
N1=InStr(TempStr,"{L}")
Terminar se
Se InStr(TempStr,"{L/}")>0 Então
N2=InStr(TempStr,"{L/}")
Terminar se
Se N2<=N1 Então
ErrInfo=ErrInfo&"Erro no rótulo do loop..."
EstiloB = ErrInfo
Função de saída
Terminar se
N3=Mid(TempStr,N1,N2-N1+4)'//Modelos de armazenamento incluindo tags de loop {L}{L/}
N4=Replace(N3,"{L}","")'//Modelos de armazenamento que não incluem tags de loop {L}{L/}
N4=Substituir(N4,"{L/}","")
'//lista de números de páginas
Dim PrimeiroPageNum,LastPageNum
Se CurrPage-ForceNum<=1 Então
PrimeiraPáginaNum=1
ListadePáginas=""
Outro
FirstPageNum=CurrPage-ForceNum
ListadePáginas="... ..."
Terminar se
Se CurrPage+BackNum>=TotalPage Então
LastPageNum=Página Total
ListadePáginas_2=""
Outro
LastPageNum=CurrPage+BackNum
ListadePáginas_2="... ..."
Terminar se
Escureça eu
Para I = FirstPageNum até LastPageNum
Se I = CurrPage então
N5=Substituir(N4,"{N}","<b>"&I&"</b>")
N6=N6&N5
Outro
M="<a href='"&UrlStr&"Page="&I&"'>"&I&"</a>"
N5=Substituir(N4,"{N}",M)
N6=N6&N5
Terminar se
Próximo
TempStr=Substituir(TempStr,N3,N6)
EstiloB=TempStr
Função final
Função privada StyleC()
'Página inicial|< |<< 1 2 3 4 5 6 7 >>| Última página
'//Este estilo é modificado com base no StyleB, adicionando duas tags: {N9} 10 páginas anteriores {N10} Próximas 10 páginas
'//Tag:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Escurecer T
T=EstiloB()
'//As primeiras dez páginas
M="|<<"
Se CurrPage-10>=1 Então
M="<a href='"&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
Terminar se
T=Substituir(T,"{N9}",M)
M=">>|"
Se CurrPage+10<=TotalPage então
M="<a href='"&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
Terminar se
T=Substituir(T,"{N10}",M)
EstiloC=T
Função Final
Função Privada StyleD()
'//Este estilo é modificado com base no StyleC
'//Total de {N8} registros da página {N6} atualmente é de {N5} página {N7} registros por página
'//Página inicial|< |<< 1 2 3 4 5 6 7 >>|
'//Tag:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Escurecer T
T=EstiloC()
T=Substituir(T,"{N8}",RegistroTotal)
T=Substituir(T,"{N6}",TotalPage)
T=Substituir(T,"{N5}",PáginaAtual)
T=Substituir(T,"{N7}",PáginaN)
EstiloD=T
Função Final
Classe Final
%>