Pregunta

En Flex estoy usando el siguiente código para permitir la ordenación en un DataGrid (los datos están localizados y ordenados en el lado del servidor).

        private function headerReleaseHandler(event:DataGridEvent):void
        {
            var column:DataGridColumn = DataGridColumn(event.currentTarget.columns[event.columnIndex]);

            if(this.count>0)
            {
                if(this.query.SortField == column.dataField)
                {
                    this.query.SortAscending = !this.query.SortAscending;
                }
                else
                {
                    this.query.SortField = column.dataField;
                    this.query.SortAscending = true;
                }
                this.fill();
            }

            event.preventDefault();
        }

Esto funciona perfectamente, excepto que no se muestran las flechas que indican la ordenación. ¿Cómo puedo lograr eso?

¡Gracias! / Niels

¿Fue útil?

Solución

Hay un ejemplo aquí si esto es lo que está buscando: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-having-to-click- una columna /

Parece que necesita actualizar la colección utilizada por su proveedor de datos.

Otros consejos

He encontrado el mismo problema y la única solución que encontré fue anular el DataGrid y crear uno personalizado. Aquí está la clase:

public class DataGridCustomSort extends DataGrid
{

    public function DataGridCustomSort()
    {
        super();

        addEventListener(DataGridEvent.HEADER_RELEASE,
            headerReleaseHandlerCustomSort,
            false, EventPriority.DEFAULT_HANDLER);
    }       

    public function headerReleaseHandlerCustomSort(event:DataGridEvent):void {
        mx_internal::sortIndex = event.columnIndex;
        if (mx_internal::sortDirection == null || mx_internal::sortDirection == "DESC")
            mx_internal::sortDirection = "ASC";
        else
            mx_internal::sortDirection = "DESC";
        placeSortArrow();
    }

}

Debe llamar específicamente al método placeSortArrow () cuando obtiene el evento HEADER_RELEASE y establece el índice de columna y la información de dirección.

en el código anterior, ¿qué hace " esto " me refiero a si es la cuadrícula de datos porque this.query.SortField me confunde, supongo que 'this' y " query 'son sus propios objetos personalizados. y por qué estás buscando recuento. lo que cuenta es eso.

Saludos -Mohan

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