Por ejemplo, en el evento Sorting del gridview, este pedazo de código no funciona: (es decir, siempre se va al ASC y no entra al DESC) Pero para el segundo caso sí, porque... El GridView alternará de forma automática entre "ASC" o "DESC" en SortExpression en cada clic, para conmutar entre orden de clasificación ascendente o descendente.
Dim strOrderBy As String = e.SortExpression
Select Case e.SortDirection
Case SortDirection.Ascending
strOrderBy = strOrderBy + " ASC"
Me.prcCargarPersonas(strOrderBy)
Case SortDirection.Descending
strOrderBy = strOrderBy + " DESC"
Me.prcCargarPersonas(strOrderBy)
End Select
Para el primero, lo arreglé de esta manera (utilizando una variable de state)
Dim strOrderBy As String = e.SortExpression
Select Case Me.ViewState("Orden")
Case "ASC"
strOrderBy = strOrderBy + " ASC"
Me.prcCargarPersonas(strOrderBy)
ViewState("Orden") = "DESC"
Case "DESC"
strOrderBy = strOrderBy + " DESC"
Me.prcCargarPersonas(strOrderBy) 'este es mi método que carga y bindea mi
grilla
ViewState("Orden") = "ASC"
Case Else
strOrderBy = strOrderBy + " ASC"
Me.prcCargarPersonas(strOrderBy)
ViewState("Orden") = "ASC"
End Select
Todo dentro del evento SORTING del gridview. Previamente, se le añade la propiedad a tu gridview AllowSorting="True" y por cada columna a utilizar para el sort, se le añade la propiedad SortExpression="NombreColumnaBaseDeDatos"