Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/12/2005, 13:54
Avatar de ElAprendiz
ElAprendiz
 
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 2 meses
Puntos: 2
Regalo de navidad: Paginador automatico

he visto que muchos tiene problemas al paginar los resultados de una consulta.

les comparto esta funcion que he realizado en mi tiempo libre. permite, entregandole los datos necesarios, paginar automaticamente los resultados utilizando getrows. realize algunas pruebas con y sin esta funcion y la demora es practicamente imperceptible.

trate de hacer customizable la mayor parte del codigo para que pueden moldearla a su gusto (fuentes, tamaños, etc). es muy parecida a la usa FDW.

el codigo esta hecho a partir de la paginacion de aspfacil.com
http://www.aspfacil.com/codigo/verco...o=rspagina.asp
y que en general casi todos usamos aca.

cualquier duda o mejora es bienvenida.

para llamarlo lo usan asi

link_paginas paginaActual, paginastotales, "demo.asp", parametros, registros, "usuarios encontrados"

Código:
SUB LINK_PAGINAS(paginaactual, paginastotales, nombre_pagina, parametros, registros, titulo)
 '#############################################################
 ' paginaactual       = Corresponde a la pagina en que se encuentra posicionado actualmente
 ' paginastotales     = Numero total de paginas devueltas
 ' Pagina_web         = nombre de la pagina paginada ej. paginacion.asp
 ' Parametros         = parametros que queremos agregar en los vinculos de las paginas
 ' registros          = numero total de registros encontrados
 ' Titulo             = Titulo para la paginacion ej. "usuarios encontrados"
 ' ancho_tabla        = Ancho de la tabla
 ' ancho_celda        = ancho de las celdas. recomendable 20
 ' numero_de_hojas    = corresponde al numero de hojas que se veran en pantalla.
           'recomiendo utilizar numero impares y entre 5 y 10.
 ' fuente_numeros     = fuente de los numeros
 ' fuente_titulo      = fuente del titulo
 ' size_titulo        = tamaño de la fuente del titulo
 ' imagen_hojas       = ruta para la imagen de las hojas. dejar en blanco si no se va utilizar
 ' fondo_celda_activa = ruta para imagen o color de la celda activa.
                           ' ej. para color "bgcolor=""red"""
         ' ej. para una imagen de fondo "background=""fondo.jpg"""
 ' size_numero        = tamaño del numero de pagina
 ' size_ant_sig       = Tamaño del vinculo anterior y siguiente
 ' fuente_ant_sig     = Fuente del vinculo anterior y siguiente
 ' caracter_anterior  = caracter que representa un vinculo a la pagina anterior
 ' caracter_siguiente = caracter que representa un vinculo a la pagina siguiente
 ' caracter_primero   = caracter que representa un vinculo a la primera pagina
    ' caracter_ultimo    = caracter que representa un vinculo a la ultima pagina
 '#############################################################
 'seccion editable
 ancho_tabla="100%"
 ancho_celda=20
 numero_de_hojas=7
 fuente_numeros="Tahoma, Arial, Verdana"
 fuente_titulo="arial"
 size_titulo=1
 imagen_hojas=""
 fondo_celda_activa="bgcolor=""yellow"""
 size_numero=1
 size_ant_sig=1
 fuente_ant_sig="arial"
 caracter_anterior="<"
 caracter_siguiente=">"
 caracter_primero="<<"
 caracter_ultimo=">>"%>
 <style>
 .Td_subrayado {//rayado cuadrado
  border-top: 1px;
  border-left: 1px;
  border-right: 1px;
  border: 1px solid;
  }
 </style>
 <%
 '############################################################
 if len(parametros)>=1 then parametros=parametros+"&"
 %>
 <table align="center" border="0" width="<%=ancho%>" cellpadding="0" cellspacing="0" style="border-collapse: collapse">
 <tr>
 <td align="right"><font face="<%=fuente_titulo%>" size="<%=size_titulo%>"><%=registros%>&nbsp;<%=titulo%>&nbsp;Pág.&nbsp;<%=paginaactual%>&nbsp;de&nbsp;<%=paginastotales%>&nbsp;&nbsp;</font></td>
 <td width="20" align="center"><%=imagen_hojas%></td><%
 if paginastotales>1 then
  if paginastotales>numero_de_hojas then
   if paginaactual<=numero_de_hojas then
    for i=1 to numero_de_hojas
     if paginaactual=i then%>
      <td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado">
      <font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=paginaactual%></b></font></td><%
     else%>
      <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>">
      <font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
     end if
    next%>
    <td width="<%=ancho_celda%>" align="center" class="td_subrayado">
    <a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual+1%>" title="Pagina Siguiente (<%=paginaactual+1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_siguiente%></b></font></a></td>
    <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginastotales%>" title="Ultima Pagina (<%=paginastotales%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_ultimo%></b></font></a></td><%
   else
    'estamos en medio de la paginacion
    if paginaactual+numero_de_hojas<=paginastotales then%>
     <td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=1" title="Primera Pagina (1)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_primero%></b></font></a></td>
     <td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-1%>" title="Pagina Anterior (<%=paginaactual-1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_anterior%></b></font></a></td>
     <%
     f=int(numero_de_hojas/2)
     j=0
     for i=paginaactual-(f) to paginaactual+(f)
      if paginaactual=i then%>
       <td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado" valign="middle"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=i%></b></font></td><%
      else%>
       <td width="<%=ancho_celda%>" align="center" class="td_subrayado" valign="middle"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-f+j%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
      end if
      j=j+1
     next%>
     <td width="<%=ancho_celda%>" valign="middle" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual+1%>" title="Pagina Siguiente (<%=paginaactual+1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_siguiente%></b></font></a></td>
     <td width="<%=ancho_celda%>"  valign="middle" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginastotales%>" title="Ultima Pagina (<%=paginastotales%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_ultimo%></b></font></a></td><%
    else
     ' parte final de la paginacion%>
     <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=1" title="Primera Pagina (1)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_primero%></b></font></a></td>
     <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a  href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=paginaactual-1%>" title="Pagina Anterior (<%=paginaactual-1%>)"><font size="<%=size_ant_sig%>" face="<%=fuente_ant_sig%>"><b><%=caracter_anterior%></b></font></a></td><%
     for i=((paginastotales+1)-numero_de_hojas) to paginastotales
      if i<>0 then
       if paginaactual=i then%>
        <td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><b><%=i%></b></font></td><%
       else%>
        <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
       end if
      end if
     next
    end if
   end if
  else
   ' paginas totales es menor a numero_de_hojas
   for i=1 to paginastotales
    if paginaactual=i then%>
     <td width="<%=ancho_celda%>" align="center" <%=fondo_celda_activa%> class="td_subrayado"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=paginaactual%></font></td><%
    else%>
     <td width="<%=ancho_celda%>" align="center" class="td_subrayado"><a href="<%=nombre_pagina%>?<%=parametros%>pagina=<%=i%>"><font size="<%=size_numero%>" face="<%=fuente_numeros%>"><%=i%></font></a></td><%
    end if
   next
  end if
 end if%>
 </tr>
 </table>
<%END SUB
%>
__________________
Manual de ASP Avanzado ;-)