Paginación en un control GridView de servidor Web
Actualización: noviembre 2007
El control GridView de ASP.NET tiene una función de paginación integrada que es compatible con la función de paginación básica. Puede utilizar la interfaz de usuario de paginación predeterminada o crear una interfaz de paginación personalizada.
Cómo funciona la paginación en el control GridView
El control GridView admite la paginación de los elementos en su origen de datos. Establezca la propiedad AllowPaging en true para habilitar la paginación. El control GridView admite la paginación si se da una de estas condiciones:
Si el control GridView se enlaza a un control del origen de datos que admite la función de paginación en el nivel de la interfaz, el control GridView aprovechará directamente esa función. La paginación en el nivel de la interfaz significa que el control GridView solicita sólo tantos registros del origen de datos como necesita para representar la página actual. El número de registros solicitado puede variar en función de otros factores, como si el origen de datos es compatible con la obtención del recuento del registro total, el número de registros por página especificado por la propiedad PageSize y el número de botones de paginación que se muestran cuando la propiedad PageButtonCount se establece en Numeric.
Nota: De los controles de origen de datos incluidos en .NET Framework, sólo el control ObjectDataSource admite la paginación en el nivel de la interfaz.
Si el control GridView está enlazado a un control del origen de datos que no admite directamente la función de paginación o si el control GridView está enlazado a una estructura de datos en el código a través de la propiedad DataSource, el control GridView realizará la paginación al recibir todos los registros de datos del origen, aunque mostrará sólo los registros de la página actual y descartará el resto. Esta operación sólo se admite cuando el origen de datos del control GridView devuelve una colección que implementa la interfaz ICollection (incluidos los conjuntos de datos).
Nota: Si el origen de datos no admite directamente la paginación y no implementa la interfaz ICollection, el control GridView no puede paginar. Por ejemplo, si está utilizando un control SqlDataSource y ha establecido su propiedad DataSourceMode en DataReader, el control GridView no puede implementar la paginación.
Personalizar la configuración de paginación y la interfaz de usuario
Puede personalizar la interfaz de usuario de paginación del control GridView de varias maneras. Puede definir el tamaño de la página (es decir, el número de elementos que se van a mostrar al mismo tiempo) mediante la propiedad PageSize. También puede definir la página actual del control GridView mediante la propiedad PageIndex. Puede especificar un comportamiento más personalizado a través de la propiedad PagerSettings o de una plantilla de paginación.
Modos de paginación
La propiedad PagerSettings le permite personalizar el aspecto de la interfaz de usuario de paginación que genera automáticamente el control GridView cuando la propiedad AllowPaging se establece en true. El control GridView puede mostrar controles de dirección que permiten desplazarse hacia delante y hacia atrás, así como controles numéricos que permiten el desplazamiento del usuario a una página determinada.
La propiedad PagerSettings del control GridView se establece en una clase PagerSettings. Para personalizar el modo de paginación, puede definir la propiedad Mode del control GridView. Por ejemplo, para personalizar el modo de la interfaz de usuario de paginación, puede definirlo como se muestra a continuación:
GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast
Los modos disponibles son:
Apariencia del control de paginación
El control GridView tiene numerosas propiedades que se pueden utilizar para personalizar el texto y las imágenes en distintos modos de paginación. Por ejemplo, si desea que en la exploración puedan utilizarse botones de dirección, pero desea personalizar el texto que aparece, puede personalizar el texto del botón definiendo las propiedades NextPageText y PreviousPageText como en el ejemplo siguiente:
GridView1.PagerSettings.NextPageText = "Click for next page"
GridView1.PagerSettings.PreviousPageText = "Click for previous page"
También puede utilizar imágenes para personalizar el aspecto de los controles de paginación. La clase PagerSettings incluye las propiedades de la dirección URL de la imagen en los botones de comando de primera página, última página, página anterior y página siguiente.
Por último, puede controlar el aspecto de los comandos de paginación estableciendo la propiedad PagerStyle del control GridView en el valor TableItemStyle.
Plantilla de paginación de los datos
Si establece la propiedad AllowPaging del control GridView en true, el control GridView agrega automáticamente controles de interfaz de usuario para la función de paginación. Puede personalizar la interfaz de usuario para la función de paginación agregando una plantilla PagerTemplate. Para especificar qué operación de paginación se va a realizar, incluya un control Button cuya propiedad CommandName esté establecida en Page y la propiedad CommandArgument esté establecida en uno de los valores siguientes:
First para desplazarse a la primera página.
Last para desplazarse a la última página.
Prev para desplazarse a la página anterior.
Next para desplazarse a la siguiente página de datos.
Un número para desplazarse a una página determinada.
Eventos de paginación
El control GridView desencadena dos eventos cuando se desplaza a una nueva página de datos. El evento PageIndexChanging se produce antes de que el control GridView realice la operación de paginación. El evento PageIndexChanged se produce después de que se ha devuelto una nueva página de datos al control GridView.
Puede utilizar el evento PageIndexChanging para cancelar la operación de paginación, si es necesario, o realizar una tarea antes de que el control GridView solicite una nueva página de datos. Puede utilizar el evento PageIndexChanged para realizar una tarea después de que el usuario se desplace a una página de datos diferente.