Hola, me respondo a mi mismo y pongo la solución por si a alguien interesa. Lo que he venido a hacer con la ordenación del datagrid ha sido lo siguiente:

Asociar al evento headerRelease del Datagrid mi propia función de ordenación.

Puesto que el dataProvider de mi datagrid es un RecordSet he tenido que utilizar:

myrecord.sortItemsBy(["Nombre columna"],null, Array.NUMERIC) para columnas con datos numéricos

*** MUY IMPORTANTE LO DEL NULL PORQUE SI NO LA ORDENACION NUMERICA SE LA PASA POR EL FORRO (myrecord.sortItemsBy(["Nombre columna"],"ASC", Array.NUMERIC) MAAALLLL )*****

A la hora de ordenar sucesiva y consecutivamente por una misma columna (ascendente/descendente) comprobé que tardaba muy mucho asi que para estos casos de ordenación sucesiva por una misma columna le doy la vuelta al dataProvider y me ahorro todo el trabajo q supone aplicar un algoritmo de ordenacion (y el quicksort, utilizado por defecto, en este caso no es el mejor).

Vale, pero ahora con todo el "cachondeo" resulta que la flechita que indica si la columna está ordenada ascendente o descendente resulta q es una lotería y cada vez sale la que quiere.
¿Cómo controlo eso?
Bueno, pues hay una propiedad del datagrid que se llama "sortDirection", que es la que lleva el control de esto. Vale, pues la pongo a lo que yo quiera (ASC o DESC) y ya está, ¿verdad? Puessssss........NO, NO ESTA. Todavía falta una cosa por hacer y es llamar al método del datagrid "placeSortArrow()"

Resumiendo, si parto de que tengo un datagrid con un array de dos columnas como dataprovider lo siguiente haría que siempre se quedara la flechita de ordenacion descendente al pulsar en la cabecera de una columna:

// Desactivo la ordenacion por defecto
mydg.getColumnAt(0).sortOnHeaderRelease = false;
mydg.getColumnAt(1).sortOnHeaderRelease = false;


var myListener = new Object();
myListener.headerRelease = function(event) {
     /* Aqui se pondria la logica de ordenacion que queramos
      */
     event.target.sortDirection = DESC;
     event.target.placeSortArrow();
};
// Se añade el listener
mydg.addEventListener("headerRelease", myListener);


Jooooodeeerrr, qué rayada!!!
En fin, guardad esto por ahí q os puede ahorrar algún día muchos dolores de cabeza

Gracias a todos y un saludo.


----------------------------------
Lista ASNativos:asnativos@5dms.com
http://www.5dms.com/listas
----------------------------------

Responder a