2012-06-15 13 views

Respuesta

8

que encontró una manera de hacerlo, no está seguro de si se trata de la mejor manera. Pero básicamente cuando se desencadena el evento de ordenación y la SortDirection actual es nula, lo configuro en Ascending para que el clasificador predeterminado revierte SortDirection a descendente, y esto solo ocurre en la primera clasificación porque es la única vez que SortDirection es nulo.

myGrid.Sorting += (s, e) => e.Column.SortDirection = e.Column.SortDirection ?? ListSortDirection.Ascending; 
+0

Por qué ¿no podemos simplemente decir: "e.Column.SortDirection = ListSortDirection.Ascending"? – Joe

+0

@Joe hey, es porque solo quiero configurarlo en ListSortDirection.Ascendiendo si el valor nunca se ha establecido antes (SortDirection == null) ... básicamente el truco es que la primera vez que haga clic en la dirección de clasificación activará este evento, estableces la SortDirection nula actual en Ascending para que la cuadrícula vea que está actualmente ascendiendo y luego lo voltea hacia Descending ... –

+0

oh ... Lo veo ahora ... Creo que debo haber cometido un error. lee tu código la primera vez que lo vi. – Joe

0

He hecho algo similar en Winforms. Maneje el evento DataGrid.Sorting, luego invierta programáticamente el orden de clasificación si no es "none".

Comprobar este enlace para obtener el aspecto que tiene en WinForms: DataGridViewColumn initial sort direction

0

Aquí es una versión expandida de la respuesta aceptada (no soy fan de esa notación compacta):

private void _myGrid_Sorting(object sender, DataGridSortingEventArgs e) 
{ 
    if (e.Column.SortDirection == null) 
     e.Column.SortDirection = ListSortDirection.Ascending; 
} 
Cuestiones relacionadas