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
----------------------------------