Flex: DataGrid piloté par base de données: les flèches disparaissent
-
11-07-2019 - |
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
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