Paginación de controles en ASP.NET 4.5

  • Por
  • ASP, .NET
Novedades para la paginación de los datos en ASP.NET 4.5. Cómo utilizar el control para paginado de datos de forma automática en la versión 4.5 de ASP.NET.

Abstract

Desde los inicios de la web, la necesidad del paginado de los datos ha sido vital, no solo por mostrar los datos agrupados en conjuntos que sean fácil de leer y seguir, sino también, por el volumen y tiempo de carga de nuestra página. Con la llegada del asp.net 4.5 se da un nuevo impulso al paginado, dotándolo de una mayor simplicidad y una mayor seguridad, hoy veremos cómo hacerlo.

Contenido

Desde que se presentó en el Build, la preview del visual Studio 2011, se ha generado una gran expectativa sobre la que será la versión 4.5 de asp.net, hoy hablaremos de una mejora en el enlazado de los controles de datos: La paginación de controles de forma automática.

Ya en la versión 2, los controles enlazados, como son el gridView, podían paginarse, para eso simplemente accedíamos al Smart Tag del control, y seguíamos el asistente, hasta que le asociábamos un datasource.

Este método, aunque fácil de realizar, y eficiente, era poco recomendable, porque llevaba al archivo aspx, la consulta que debía ejecutar de forma paginada, lo que era un problema de seguridad, y lo que conllevaba dar pistas sobre el esquema de la base de datos, además de dotar de información sobre vistas o tablas sobre las que se realizaba la consulta.

Estos problemas de seguridad, se solucionaban paginando a mano, generando uno botones de paginación y asociando las consultas conforme al número de página y el tamaño de página el cual, era deseable que fuese configurable a través del web.config.

<appSettings>
<add key="TamanoPagina" value="30"/>
</appSettings>

Con la llegada del asp.net 4.5, surge una nueva opción, y es que aprovechando otra de las nuevas cualidades, nos permitirá asociar al datasource una consulta de linQ, es decir un objeto Queryable. Si además tipamos el control, este estará capacitado para mostrar el número de páginas y paginar los datos mostrados, ejecutando una consulta cada vez que tiene que recargar los datos mostrados en este control.

<asp:GridView ID="grvUsuarios" runat="server"
ModelType="WebApplication1.Model.Usuarios"
SelectMethod="GetUsuarios" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="DNI" HeaderText="DNI" />
<asp:BoundField DataField="Nombre" HeaderText="NOMBRE" />
<asp:BoundField DataField="Descripcion" HeaderText="Descripción" />
<asp:TemplateField HeaderText="# de Usuarios">
<ItemTemplate><%#Item.Usuarios.Count %></ItemTemplate>
</asp:TemplateField>
</Columns>
</ asp:GridView >

Como vemos al utilizar el ModelType, estamos tipando el control, con lo que ya no será necesario utilizar etiquetas del servidor o el evento RowDataBound, para mostrar los datos en las columnas, y estas reciben los valores del objeto Model.Usuarios.

Además vemos que se utiliza el elemento SelectMethod, donde especificaremos el método, dentro del codebehind, que utilizaremos para pasarle el objeto Queryable.

public IQueryable<Category> GetUsuarios ()
{
var db = new MinegocioDB();
return db.Usuarios.Include(c => c.Usuarios);
}

Conclusión

En Microsoft están preocupados, por temas de la seguridad y la usabilidad, por ello nos traen cada vez controles más avanzados, seguros y fáciles de utilizar para que el desarrollador, se centre en lo que es realmente importante. Con la preview de asp.net 4.5 la evolución en este sentido es clara, mejorando las tareas de paginación y tipado de datos, que son tareas, que aunque no suele acarrear problemas, siempre consumen un tiempo precioso.