Ordenar los datos de un control GridView de servidor Web

Actualización: noviembre 2007

El control GridView proporciona una funcionalidad integrada de ordenación que no requiere codificación. Se puede personalizar la funcionalidad de ordenación del control GridView utilizando los valores personalizados de la propiedad SortExpression en las columnas y utilizando los eventos Sorting y Sorted.

Cómo funciona la ordenación en el control GridView

El control GridView no realiza una ordenación propia de las columnas, sino que se basa en el control del origen de datos para realizar la ordenación. El control proporciona una interfaz de usuario para realizar la ordenación, como controles LinkButton que aparecen en la parte superior de cada columna de la cuadrícula. No obstante, el control GridView se basa en las funciones de ordenación del control del origen de datos al que está enlazado.

Si el control del origen de datos enlazado puede ordenar los datos, el control GridView puede interactuar con este control del origen de datos y solicitar los datos ordenados; para ello, transfiere una propiedad SortExpression al origen de datos cuando se seleccionan los datos. No todos los controles del origen de datos admiten la función de ordenación; por ejemplo, el control XmlDataSource no lo hace. Si el control del origen de datos admite la función de ordenación, el control GridView puede aprovechar esta función. En la lista siguiente se describen los controles del origen de datos y la configuración necesaria para que admitan la función de ordenación:

Proceso de ordenación de GridView

Puede habilitar la operación de ordenación predeterminada en el control GridView estableciendo su propiedad AllowSorting en true. Al establecer esta propiedad en true, el control GridView representa un control LinkButton en los encabezados de las columnas. El control también establece de forma implícita la propiedad SortExpression de cada columna en el nombre del campo de datos al que está enlazado. Por ejemplo, si la cuadrícula contiene una columna que muestra la columna Ciudad de la tabla Empleados en la base de datos de ejemplo, Northwind, la propiedad SortExpression de esa columna se establecerá en Ciudad.

En tiempo de ejecución, los usuarios pueden hacer clic en el control LinkButton de un encabezado de columna para realizar la ordenación por esa columna. Al hacer clic en el vínculo, la página realiza una devolución de datos y desencadena el evento Sorting del control GridView. La expresión de ordenación (de forma predeterminada, el nombre de la columna de datos) se transfiere como parte de los argumentos del evento. El comportamiento predeterminado del evento Sorting es que el control GridView transfiera la expresión de ordenación al control del origen de datos. El control del origen de datos ejecuta el método o la consulta Select, incluidos los parámetros de ordenación transferidos por la cuadrícula.

Después de que la consulta se ha ejecutado, se desencadena el evento Sorted de la cuadrícula. Este evento permite ejecutar la lógica posterior a la consulta, mostrando, por ejemplo, un mensaje de estado. Por último, el control del origen de datos vuelve a enlazar el control GridView a los resultados de la consulta reordenada.

El control GridView no comprueba si el control del origen de datos admite la función de ordenación; siempre transfiere la expresión de ordenación al origen de datos. Si el control del origen de datos no admite la ordenación y se realiza una operación de ordenación en el control GridView, el control GridView produce la excepción NotSupportedException. Puede detectar esta excepción en un controlador del evento Sorting y puede comprobar el origen de datos para determinar si admite la función de ordenación o debe utilizar su propia lógica.

Controlar la ordenación en columnas individuales

Al definir la propiedad AllowSorting de la cuadrícula, podrá ordenar las columnas de forma predeterminada. Puede deshabilitar la ordenación en campos individuales (BoundColumno TemplateColumn ) estableciendo la propiedad SortExpression de la columna individual en una cadena vacía ("").

Ordenación personalizada

Si la operación de ordenación predeterminada no se realiza conforme a sus requisitos, puede personalizar el comportamiento de la operación de ordenación de la cuadrícula. La técnica básica para la ordenación personalizada es controlar el evento Sorting. En el controlador, puede hacer lo siguiente:

  • Personalizar la expresión de ordenación que se transfiere al control del origen de datos. De forma predeterminada, la expresión de ordenación es el nombre de una única columna. Puede modificar la expresión de ordenación en el controlador. Por ejemplo, si desea que la ordenación se realice por dos columnas, puede crear una expresión de ordenación que incluya a las dos. Puede transferir después la expresión de ordenación modificada al control del origen de datos. Para obtener más información, vea la propiedad SortExpression.

  • Crear su propia lógica de ordenación. Por ejemplo, si está trabajando con un origen de datos que no admite la ordenación, puede realizar la ordenación en su propio código y, a continuación, enlazar la cuadrícula a los datos ordenados.

Vea también

Conceptos

Información general sobre los controles de servidor Web ASP.NET enlazados a datos