Esta paginación utiliza el cursor 0, que es Rs.Open Sql,Conn,0,1. Pero no se siente mucho más rápido, 10
El tiempo de paginación de 10.000 datos es de más de 300 milisegundos.
<%
Página de clase
Página de curso privada
Página privadaN
URL privada
TempStr privado
Información de error privada
PrivadoIsErr
Registro total privado
Página total privada
Páginas públicas
Temporal privado(11)
Temporal privado(8)
'------------------------------------------------ - ---------
Subclase privada_Initialize()
CurrPage=1'//La página actual se muestra como la primera página de forma predeterminada
PageN=10'//De forma predeterminada, se muestran 10 datos en cada página
UrlStr="#"
TempStr=""
ErrInfo="ErrInfo:"
IsErr=Falso
Subtítulo final
Subclase privada_Terminate()
Si esObjeto(Páginas) Entonces
PáginaRs.Cerrar
Establecer páginas = nada
Terminar si
Borrar TempA
Borrar temperatura B
Subtítulo final
'------------------------------------------------ - ---------
'//Obtiene el número de página actual
Propiedad pública Let CurrentPage(Val)
Página actual=Val
Propiedad final
Propiedad pública Obtener página actual()
Página actual=Página actual
Propiedad final
'//Obtiene el número de elementos que se muestran en cada página
Propiedad pública Let PageNum(Val)
PáginaN=Val
Propiedad final
Propiedad pública Obtener PageNum()
Número de página=PáginaN
Propiedad final
'//Obtener URL
Propiedad pública Let Url (Val)
CadenaUrl=Val
Propiedad final
URL de obtención de propiedad pública()
URL = Cadena URL
Propiedad final
'//Obtener la plantilla
Temporal de alquiler de propiedad pública (Val)
TempStr=Val
Propiedad final
Propiedad pública obtener temperatura()
Temp=TempStr
Propiedad final
'------------------------------------------------ - ----------
Subejecutivo público (Sql, ConnObj)
En caso de error Continuar siguiente
Establecer PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'El uso de cursores del lado del cliente puede mejorar la eficiencia
PageRs.PageSize = PageN 'Define el número de registros que se muestran en cada página del conjunto de registros de paginación
PageRs.Open Sql,ConnObj,0,1
Si número de error <> 0 entonces
Err.Borrar
PáginaRs.Cerrar
Establecer páginas = nada
ErrInfo=ErrInfo&"Error al crear o abrir el conjunto de registros..."
EsErr=Verdadero
Respuesta.Escribir ErrInfo
Respuesta.Fin
Terminar si
TotalRecord=PageRs.RecordCount'// ¿Qué pasa si es 0?
Si RegistroTotal>=1 Entonces
'------------------------------------------------ - --------------------------comenzar
'// Calcula el número total de páginas, Ps, ¿por qué no utilizar PageRs.PageCount?
'Si TotalRecord Mod PageN=0 entonces
'PáginaTotal=PáginaRs.RecordCountPáginaN
'Demás
'PáginaTotal=PáginaRs.RecordCountPáginaN
'PáginaTotal=Abs(Int(PáginaTotal))
'Finalizar si
PáginaTotal=PáginaRs.PageCount
'// Procesa el número de página recibido actualmente, el valor predeterminado es 1, por lo que si no es un tipo numérico, será 1
Si es numérico (página actual) entonces
Página actual=CLNg(Página actual)
Si PáginaActual<1 Entonces PáginaActual=1
Si CurrPage>TotalPage Entonces CurrPage=TotalPage
Demás
'//Dim M:M="":EsNumeric(M)=Verdadero
Página actual=1
Terminar si
'------------------------------------------------ - -------------------------Finalizar
Demás
Página Total=0
Página actual=1
Terminar si
'//
PageRs.AbsolutePage = CurrPage 'absolutepage: establece el puntero al comienzo de una página
PageRs.PageSize=PáginaN
Subtítulo final
Subinicio privado()
'Temporal privadoA(10)
TempA(1)="{N1}" '//Página de inicio
TempA(2)="{N2}"'//Página anterior
TempA(3)="{N3}"'//Página siguiente
TempA(4)="{N4}"'//Última página
TempA(5)="{N5}"'//Número de página actual
TempA(6)="{N6}"'//Número total de páginas
TempA(7)="{N7}"'//Número de elementos por página
TempA(8)="{N8}"'//Número total de artículos
TempA(9)="{L}"'//Etiqueta de inicio del bucle
TempA(10)="{N}"'//Etiqueta única en bucle: número de página
TempA(11)="{L/}"'//Etiqueta de fin de bucle
'Temporal privadoB(8)
TempB(1)="Inicio"
TempB(2)="Página anterior"
TempB(3)="Página siguiente"
TempB(4)="Última página"
TempB(5)=CurrPage'//Número de página actual
TempB(6)=TotalPage'//Número total de páginas
TempB(7)=PageN'//Número de elementos por página
TempB(8)=TotalRecord'//Número total de artículos
Subtítulo final
Subshow público (estilo)
Si IsErr=True entonces
Respuesta.Escribir ErrInfo
Salir Sub
Finalizar si
se inicia la llamada()
Seleccionar estilo de caja
Caso 1
Respuesta.Escribir estiloA()
Caso 2
Respuesta.Escribir estiloB()
Caso 3
Respuesta.Escribir estiloC()
Caso 4
Respuesta.Escribir StyleD()
Caso más
ErrInfo=ErrInfo&"El estilo actual no existe..."
Respuesta.Escribir ErrInfo
Finalizar selección
Subtítulo final
Función pública ShowStyle(Estilo)
Si IsErr=True entonces
ShowStyle=ErrorInfo
Función de salida
Finalizar si
se inicia la llamada()
Seleccionar estilo de caja
Caso 1
MostrarEstilo= EstiloA()
Caso 2
MostrarEstilo= EstiloB()
Caso más
ErrInfo=ErrInfo&"El estilo actual no existe..."
ShowStyle=ErrorInfo
Finalizar selección
Función final
Función privada EstiloA()
'Página de inicio Página anterior Página siguiente Última página Esta página es la página 1/20, un total de 20 páginas, 10 artículos por página y un total de 200 artículos.
'//Ejemplo de paginación: [Inicio] [Página anterior] [Página siguiente] [Última página] [Página: 4/5 páginas] [Total 86 artículos/20 artículos/página] Ir a: _ página
'//Etiqueta: {N1} {N2} {N3} {N4} || Total: {N8} registros {N6} la página actualmente es {N5} página {N7} registros por página
Si está vacío (TempStr) entonces
ErrInfo=ErrInfo&"La plantilla está vacía..."
EstiloB=ErrorInfo
Función de salida
Terminar si
Oscuro
Si PáginaTotal>1 Entonces
Si PáginaActual>1 Entonces
M="<a href='"&UrlStr&"Page=1'>"&"Inicio"&"</a>"
TempStr=Reemplazar(TempStr,"{N1}",M)
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"Página anterior"&"</a>"
TempStr=Reemplazar(TempStr,"{N2}",M)
Si CurrPage<TotalPage Entonces
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Página siguiente"&"</a>"
TempStr=Reemplazar(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Última página"&"</a>"
TempStr=Reemplazar(TempStr,"{N4}",M)
Demás
TempStr=Reemplazar(TempStr,"{N3}","Página siguiente")
TempStr=Reemplazar(TempStr,"{N4}","Última página")
Terminar si
Demás
TempStr=Reemplazar(TempStr,"{N1}","Página de inicio")
TempStr=Reemplazar(TempStr,"{N2}","Página anterior")
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Página siguiente"&"</a>"
TempStr=Reemplazar(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Última página"&"</a>"
TempStr=Reemplazar(TempStr,"{N4}",M)
Terminar si
Demás
TempStr=Reemplazar(TempStr,"{N1}","Página de inicio")
TempStr=Reemplazar(TempStr,"{N2}","Página anterior")
TempStr=Reemplazar(TempStr,"{N3}","Página siguiente")
TempStr=Reemplazar(TempStr,"{N4}","Última página")
Terminar si
T=StrTemp
T=Reemplazar(T,"{N8}",RegistroTotal)
T=Reemplazar(T,"{N6}",PáginaTotal)
T=Reemplazar(T,"{N5}",Página actual)
T=Reemplazar(T,"{N7}",PáginaN)
TempStr=T
EstiloA=TempStr
Función final
Función privada EstiloB()
'Página de inicio|< 1 2 3 4 5 6 7 >| Última página
'//Etiqueta:{N1} {N2} {L}{N}{L/}{N3}{N4}
Si está vacío (TempStr) entonces
ErrInfo=ErrInfo&"La plantilla está vacía..."
EstiloB=ErrorInfo
Función de salida
Terminar si
Dim ForceNum,BackNum'//El número que se muestra delante y detrás de la página actual
NúmFuerza=5
Número atrás=4
Oscuro
'//página delantera
M="<a href='"&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=Reemplazar(TempStr,"{N1}",M)
'//Última página
M="<a href='"&UrlStr&"Page="&TempB(6)&"'>"&TempB(4)&"</a>"
TempStr=Reemplazar(TempStr,"{N4}",M)
'//Página anterior
M="|<"
Si CurrPage-1>=1 Entonces
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
Terminar si
TempStr=Reemplazar(TempStr,"{N2}",M)
'//Página siguiente
M=">|"
Si PáginaActual+1<=PáginaTotal Entonces
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
Terminar si
TempStr=Reemplazar(TempStr,"{N3}",M)
'//Eliminar la etiqueta del bucle
Atenuado N1,N2,N3,N4,N5,N6
Si InStr(TempStr,"{L}")>0 Entonces
N1=InStr(TempStr,"{L}")
Terminar si
Si InStr(TempStr,"{L/}")>0 Entonces
N2=InStr(TempStr,"{L/}")
Terminar si
Si N2<=N1 Entonces
ErrInfo=ErrInfo&"Error en la etiqueta del bucle..."
EstiloB=ErrorInfo
Función de salida
Terminar si
N3=Mid(TempStr,N1,N2-N1+4)'//Plantillas de almacenamiento que incluyen etiquetas de bucle {L}{L/}
N4=Replace(N3,"{L}","")'//Plantillas de almacenamiento que no incluyen etiquetas de bucle {L}{L/}
N4=Reemplazar(N4,"{L/}","")
'//Lista de números de página
Atenuar primer número de página, último número de página
Si CurrPage-ForceNum<=1 Entonces
Número de primera página=1
Lista de páginas=""
Demás
FirstPageNum=CurrPage-ForceNum
ListaPágina="... ..."
Terminar si
Si CurrPage+BackNum>=TotalPage Entonces
LastPageNum=Página total
ListaPágina_2=""
Demás
LastPageNum=Página actual+Núm atrás
PageList_2="... ..."
Terminar si
Yo oscuro
Para I = FirstPageNum a LastPageNum
Si I = Página actual entonces
N5=Reemplazar(N4,"{N}","<b>"&I&"</b>")
N6=N6 y N5
Demás
M="<a href='"&UrlStr&"Page="&I&"'>"&I&"</a>"
N5=Reemplazar(N4,"{N}",M)
N6=N6 y N5
Terminar si
Próximo
TempStr=Reemplazar(TempStr,N3,N6)
EstiloB=TempStr
Función final
Función privada EstiloC()
'Página de inicio|< |<< 1 2 3 4 5 6 7 >>| Última página
'//Este estilo se modifica según StyleB, agregando dos etiquetas: {N9} 10 páginas anteriores {N10} 10 páginas siguientes
'//Etiqueta:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
T tenue
T=EstiloB()
'//Las primeras diez páginas
M="|<<"
Si CurrPage-10>=1 Entonces
M="<a href='"&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
Terminar si
T=Reemplazar(T,"{N9}",M)
M=">>|"
Si PáginaActual+10<=PáginaTotal Entonces
M="<a href='"&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
Terminar si
T=Reemplazar(T,"{N10}",M)
EstiloC=T
Función final
Función privada StyleD()
'//Este estilo se modifica según StyleC
'//El total de {N8} registros {N6} página actualmente es {N5} página {N7} registros por página
'//Página de inicio|< |<< 1 2 3 4 5 6 7 >> >|
'//Etiqueta:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
T tenue
T=EstiloC()
T=Reemplazar(T,"{N8}",RegistroTotal)
T=Reemplazar(T,"{N6}",PáginaTotal)
T=Reemplazar(T,"{N5}",Página actual)
T=Reemplazar(T,"{N7}",PáginaN)
EstiloD=T
Clase final
de función final
%>