(Vince6799 original)
La paginación en código ASP es un poco problemática. Personalmente escribí el código de paginación en dos funciones durante el proceso de escritura del código. Aunque la función no es perfecta, debería ser suficiente para aplicaciones generales.
<%
'La función de paginación se divide en dos funciones
'Función de cálculo de paginación CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
'PageList(ListType,url,consulta,Separator,ListLink)
función de lista de paginación'función de cálculo
de paginación
'totalrec número total de conjuntos de registros
'msg_per_page El número de registros que se muestran en cada página. Esta variable debe asignarse por adelantado al llamar a CalcPage.
'currentpage variable de página actual, debe asignar un valor a esta variable por adelantado al llamar a CalcPage
'n número total de páginas
'rowcount establece el número de registros de datos por página
'Objeto de conjunto de registros PageRs
subCalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
n=0 'Establece el número de página en 0 cuando no hay ningún registro
si página actual="" entonces página actual=0
'PageRs.EOF y PageRs.bof sin registro
'No se han registrado PageRs.EOF o PageRs.BOF
si no es PageRs.EOF o no PageRs.BOF entonces
totalrec=PáginaRs.recordcount
PageRs.pagesize=msg_per_página
si totalrec mod msg_per_page = 0 entonces 'Calcula el número total de páginas, recordcount: el número total de registros de datos
n = totalrecmsg_per_page 'n:Número total de páginas
demás
n = totalrecmsg_per_page+1
terminar si
si no es numérico (página actual) o página actual="" entonces página actual=1
Si página actual <> "" entonces
página actual = cint (página actual)
terminar si
si página actual < 1 entonces
página actual = 1
terminar si
si página actual*msg_per_page > totalrec y no ((página actual-1)*msg_per_page <totalrec) entonces
página actual=1
terminar si
PageRs.absolutepage = currentpage 'absolutepage: establece el puntero al comienzo de una página
rowcount = PageRs.pagesize 'pagesize: establece el número de registros de datos para cada página
terminar si
sub final
%>
<%
'Función de lista de paginación
'dirección de salto de URL
'consulta? ¿Parámetros después?
'Separador separador
'Tipo de paginación ListType
'Tipo:0 "Primera página | Página anterior | Página siguiente | Última página"
'Tipo:1 "1 | 2 | 3 | 4 | ..........| Página siguiente"
'Tipo: 2 "Primera página | Primeras diez páginas | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Siguientes diez páginas | Última página"
'Estilo utilizado por los enlaces ListLink
sub PageList(ListType,url,querry,Separator,ListLink)
si Separador="" entonces Separador="|"
si ListType="" entonces ListType="0"
seleccione tipo de lista de casos
caso "0"
respuesta.escribir""&página actual&"/"&n&"página "
respuesta.escribir "Total"&totalrec&" piezas de información "
si página actual <= 1 entonces
Response.write"Primera página "&Separador&" "
respuesta.escribir "Página anterior"&Separador&" "
demás
Response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Primera página</a> "&Separator&" "
Response.write"<a href="""&url&"?page="¤tpage-1&"&"&querry&""" class="""&ListLink&""">Página anterior</a> "&Separator&"  ; "
terminar si
si página actual = n entonces
respuesta.escribir "Página siguiente"&Separador&" "
respuesta.escribir "Última página"
demás
Response.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Página siguiente</a> "&Separator&"  ; "
Response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Última página</a> "
terminar si
caso "1"
si página actual < n entonces
Response.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Página siguiente</a> "
demás
respuesta.escribir "Página siguiente"
terminar si
para i=1 an
si cstr(i)=cstr(página actual) entonces
respuesta.escribir "<b>"&i&"</b>"&" "&Separador&" "
demás
respuesta.write"<a href="""&url&"?page="&i&"&"&querry&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
terminar si
próximo
caso "2"
PageMerCout=10 'El número máximo de páginas que se pueden pasar cada vez
'Obtiene el segmento de número de página máximo del registro
si n mod PageMerCout=0 entonces
MaxPageFiled=nPageMerCout
demás
MaxPageFiled=nPageMerCout+1
terminar si
'Determinar el segmento de número de página donde se encuentra la página actual
si página actual mod PageMerCout =0 entonces
CurrPageFiled=página actualPageMerCout
demás
CurrPageFiled=página actualPageMerCout+1
terminar si
'Obtiene el número de página máximo y el número de página mínimo del segmento de número de página actual
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'Salida "primera página | primeras diez páginas |"
si página actual<=1 entonces
Response.write"Primera página "&Separador&" "
demás
Response.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Primera página</a> "&Separator&" "
terminar si
si CurrPageFiled<=1 entonces
Response.write"Primeras diez páginas"&Separador&" "
demás
Response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&querry&""" class="""&ListLink&""">Primeras diez páginas</a> "&Separator&"  ;"
terminar si
'Generar el segmento de número de página actual
para i=MinPageNo a MaxPageNo
si i<=n entonces
si cstr(i)=cstr(página actual) entonces
respuesta.escribir "<b>"&i&"</b>"&" "&Separador&" "
demás
respuesta.write"<a href="""&url&"?page="&i&"&"&querry&""">"&i&"</a> "&Separador&" "
terminar si
terminar si
próximo
'Salida "siguientes diez páginas | última página"
si CurrPageFiled>=MaxPageFiled entonces
Response.write"Las próximas diez páginas"&Separator&" "
demás
Response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&querry&""" class="""&ListLink&""">Las próximas diez páginas</a> "&Separator&" "
terminar si
si página actual>=n entonces
respuesta.escribir "Última página"
demás
Response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Última página</a> "
terminar si
finalizar seleccionar
sub final
%>