Supongamos que tenemos el siguiente ListView
que toma datos de una tabla de la base de datos:
- <asp:ListView ID="LVRegistros" runat="server" DataKeyNames="IdRegistro"
- ItemPlaceholderID="AquiVanLosItems">
- <LayoutTemplate>
- <table width="100%" border="0" cellpadding="5" cellspacing="0">
- <tr>
- <td class="tdDatosTitulo">
- Nombre
- </td>
- </tr>
- <asp:PlaceHolder ID="AquiVanLosItems" runat="server"></asp:PlaceHolder>
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr>
- <td>
- <%#Eval("IdRegistro")%>
- </td>
- </tr>
- </ItemTemplate>
- <EmptyDataTemplate>
- No existen registros.
- </EmptyDataTemplate>
- </asp:ListView>
Como puedes ver el primer renglón de la tabla contendrá el texto “Nombre” y los siguientes renglones se llenarán a partir de la información que exista en la base de datos.
Ahora bien, si existieran 50,000 registros, todos ellos aparecerían en la página, lo cual está lejos de ser óptimo.
Lo ideal es mostrar los primeros “n” registros y que después exista un paginador (o pager en inglés) tipo Google, que nos permita ir desplazándonos a través de las diferentes páginas de registros.
Con ASP.NET esto es muy sencillo. Basta incluir un control llamado DataPager
dentro del LayoutTemplate
del ListView
.
El código quedaría así:
- <asp:ListView ID="LVRegistros" runat="server" DataKeyNames="IdRegistro"
- ItemPlaceholderID="AquiVanLosItems">
- <LayoutTemplate>
- <table width="100%" border="0" cellpadding="5" cellspacing="0">
- <tr>
- <td class="tdDatosTitulo">
- Nombre
- </td>
- </tr>
- <asp:PlaceHolder ID="AquiVanLosItems" runat="server"></asp:PlaceHolder>
- <tr>
- <td colspan="7" class="TdPie">Páginas:
- <asp:DataPager ID="Pager1" runat="server" PageSize="30">
- <Fields>
- <asp:NumericPagerField ButtonCount="50" />
- </Fields>
- </asp:DataPager>
- </td>
- </tr>
- </table>
- </LayoutTemplate>
- <ItemTemplate>
- <tr>
- <td>
- <%#Eval("IdCarpeta")%>
- </td>
- </tr>
- </ItemTemplate>
- <EmptyDataTemplate>
- No existen registros.
- </EmptyDataTemplate>
- </asp:ListView>
El código anterior coloca una lista de números del 1 en adelante que se pueden cliquear para moverse a las diferentes páginas de registros. Si quieres, por ejemplo, que el paginador aparezca arriba y abajo de los registros, simplemente coloca otro DataPager
donde lo necesites.
En este caso utilicé dentro de Fields
un control llamado NumericPagerField
, pero también puedes utilizar NextPreviousPagerField
y TemplatePagerField
.
Aquí encontrarás la referencia a toda la clase DataPager
con la explicación completa de cada uno de sus componentes:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datapager.aspx
¡Suerte!
Saludos!He pasado por aqui ya que me han recomendado tu pagina, me gusto mucho. Te exsorto a que sigas escribiendo ya que lo haces muy bien y proporcionas informacion de interes.
Muy buena tu explicacion,Excelente!!!
Qué bueno que les haya sido de utilidad! Saludos.
Hola, tengo un problema tu codigo es el mismo que tengo pero entres capas y creo que eso no es el problema, pero cuando hago click para paginar no me sale de nada, recien al hacer otro click recien pagina. Osea tengo que hacer doble click para que me pagine como puedo solucionar eso. Gracias.
Hola Francisco, checa esta liga, tal vez es lo que te está pasando: http://goo.gl/yjrT3
Saludos.