Ordenando un GridView enlazado a un ObjectDataSource
Deberían saber en principio que si el método de seleccionar (SelectMethod) del ObjectDataSource, devuelve un DataSet, un DataTable o un DataView, tenemos de manera automática la capacidad de hacer ordenamiento en el GridView.

Y cuando pasemos el mouse por la parte superior hacemos clic y se ordena :o, y si eso lo pones dentro de un UpdatePanel, sin comentarios.
Si ustedes han personalizado las columnas del GridView, se han podido dar cuenta que no funciona el ordenamiento. Por más que ponemos la propiedad AllowSorting igual "True" del GridView y nada...
Empiezas con la búsqueda de la verdad, para saber que pasa y porque no ordena tu GridView, la paginación dentro del UpdatePanel, te dejo alucinado y quieres como sea el ordenamiento, llegas al siguiente artículo: Sorting Data with Data Source Controls.
Te dice lo que ya sabías que si tu método de seleccionar te devuelve un DataTable, un DataView, o un DataSet el ordenamiento es automático. Compruebas eso, cambias tu DataTable a DataView y nada, y te das cuenta qué el último artículo había unas propiedades del ObjectDataSource, que te dejaron meditando si era por eso o no:
artRowIndexParameterName="StartRecord" y MaximumRowsParameterName="MaxRecords"
Modificas intentas forzar a tu ObjectDataSource, pero nada, y es así que sigues en la búsqueda, ya se volvió personal lograr el ordenamiento, aunque este fuera de los requerimientos de usuario :), y es que tu deseo de saber más, y saber que pasa, es lo único que te impulsa a seguir en la búsqueda.
Llegas a unos foros: GridView sorting possibility, y en una de las respuestas ves:
public getData(int startIDX, int maxRWS)
Y dices, creo que me estoy acercando a la solución (no sabes que estás más perdido que...)
Ahora llegas al siguiente artículo: Implement Paging using ObjectDataSource with GridView, ves una nueva propiedad del ObjectDataSource que no habías visto, SelectCountMethod, y dices me falto esto. Y para verificar te bajas el código de ejemplo del artículo, no tienes usuario, te registras desesperadamente, porque piensas que ahí esta tu respuesta. Te registraste, te logueaste, y te bajaste el código fuente. Ves un DataView, y dices eso me faltaba, eso era... Actualizas tu código y nada... y ya te vas dando cuenta que no era la solución, pero tu quieres ver la ordenación dentro de UpdatePanel así que sigues en la búsqueda.
Y llegas al siguiente artículo: Sorting Custom Paged Results, y ves un nuevo atribulo del gridView:
SortParameterName="sortExpression"
Entonces comienzas a intentar, incrustarlo dentro de tu código, pero nada. Y dices, pero la teoría dice que si el método Select devuelve un DataTable, DataSet, o DataView, el ordenamiento es automático, pero para nada funciona, y es cuando piensas que deberías crear un artículo "Los Secretos ocultos del GridView".
Ya con la moral baja y después de haberle echo de todo a ObjectDataSource, empiezas desde cero creas un SqlDataSource con GridView, funciona la paginación y el ordenamiento automático, y es así que decides probar nuevamente generando un GridView desde cero con un nuevo ObjectDataSource, y no lo puedes creer pero funciona lo malo es que las columnas del GridView fueron autogeneradas, copias tu nuevo ObjectDataSource, con tu anterior GridView, pero nada... y te das cuenta que tu ObjectDataSource, funciona, ósea lo maltrataste por gusto, pero entonces ahora te la agarras con el GridView. Y como tu editastes tu código en vista HTML, es decir no usaste el wizard gráfico de editar columnas, no te distes cuenta de esta pequeña propiedad:

Y es que no sólo basta con poner la propiedad AllowSorting del GridView igual a True, sino que cada columna se debe personalizar para habilitar el ordenamiento, además te de das cuenta que lo puedes personalizar mucho más.
Conclusiones: Si bien el ordenamiento y paginación del ObjectDataSource puede ser automático y rápido de desarrollar, excluyendo este post :$, si la cantidad de filas es muy grande puede ser que la performance de tu aplicación disminuya: Al final de este artículo hay unos resultados muy interesantes: Sorting Custom Paged Results, como se puede apreciar la paginación automática es mas lenta, ya que siempre trae todos los registros, en cambio con una paginación por grupos, la performance es mejor, ya que sólo trae los registros que necesita y no todos. También se aprecia que si agregamos índices a la ordenación la performance mejora.
Más artículos sobre ordenamiento personalizado con el ObjectDataSource:
Saludos,
Post cruzado