Pregunta

Estoy creando una tabla que muestra información de una base de datos MySQL, estoy usando ForeignKeys por todo el lugar a los datos de referencia cruzada.

Básicamente tengo una cuadrícula de datos con una columna llamada 'sistema'. El sistema es un int que representa el id de un objeto en otra tabla. He usado lableFunction para una referencia cruzada con los dos y cambiar el nombre de la columna. Pero ahora la clasificación no funciona, entiendo que usted tiene que crear una función de clasificación personalizado. He tratado de referencias cruzadas de las dos tablas de nuevo, pero eso lleva ~ 30 segundos para ordenar 1200 filas. Ahora estoy solo ni idea de lo que debería probar siguiente.

¿Hay alguna manera de acceder a la etiqueta del campo columnas dentro de la función de clasificación?

public function order(a:Object,b:Object):int
{
    var v1:String = a.sys;
    var v2:String = b.sys;
    if ( v1 < v2 ){
        trace(-1);
        return -1;
    }else if ( v1 > v2 ){
        trace(1);
        return 1;
    }else {
        trace(0);
        return 0;
    }
}

¿Fue útil?

Solución

Una manera de manejar esto es ir a través de los objetos que ha recibido y añadir la etiqueta como una propiedad de cada uno de ellos basado en el ID de referencia cruzada. A continuación, puede especificar su propiedad label en exhibición en su columna de cuadrícula de datos en lugar de utilizar una función de etiqueta. De esa manera se podrían obtener la clasificación como era de esperar en lugar de tener que crear su propia función de clasificación.

Otros consejos

La forma en que DataGrids, y otra lista de clases basadas en el trabajo es mediante el uso de itemRenderers. Extracción de grasas sólo se crean para los datos que se muestran en la pantalla. En la mayoría de los casos hay muchos más datos en su dataProvider de lo que se ve en pantalla.

Tratando de ordenar los datos en base a algo que muestra el dataGrid muy probablemente no le dará los resultados que desea.

Sin embargo, no hay ninguna razón por la que no se puede llamar a la misma función de etiqueta en sus objetos de datos en el sortFunction.

Una forma es utilizar la función itemToLabel de la cuadrícula de datos:

var v1:String = dataGrid.itemToLabel(a);
var v2:String = dataGrid.itemToLabel(b);

Una segunda forma es simplemente llamar a la labelFunction explícitamente:

var v1:String = labelFunction(a);
var v2:String = = labelFunction(b);

En mi experiencia he encontrado clasificar a ser extremadamente rápido, sin embargo que eres de registros es un poco más grande de lo que normalmente se carga en memoria en una sola vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top