Question

Dans Flex, j'utilise le code suivant pour autoriser le tri dans un DataGrid (les données sont paginées et triées sur le serveur).

        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();
        }

Cela fonctionne parfaitement, sauf que les flèches indiquant le tri ne sont pas affichées. Comment puis-je accomplir cela?

Merci! / Niels

Était-ce utile?

La solution

Il existe un exemple ici si c’est ce que vous recherchez: http://blog.flexexamples.com/2008/02/28/displaying-the-sort-arrow-in-a-flex-datagrid-control-without-have-to-click- une colonne /

Il semble que vous deviez actualiser la collection utilisée par votre fournisseur de données.

Autres conseils

J'ai rencontré le même problème et la seule solution que j'ai trouvée consistait à remplacer le contrôle DataGrid et à en créer un personnalisé. Voici la classe:

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();
    }

}

Vous devez appeler spécifiquement la méthode placeSortArrow () lorsque vous obtenez l'événement HEADER_RELEASE et définissez l'index de colonne et les informations de direction.

dans le code ci-dessus, que fait "ceci" se référer à si c'est la grille de données parce que this.query.SortField m'embrouille, je suppose que 'this' et 'query' sont vos propres objets personnalisés. et pourquoi vérifiez-vous pour le compte. qu'est-ce qui compte?

Cordialement -Mohan

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top