Package | mx.collections |
Classe | public class Sort |
Héritage | Sort EventDispatcher Object |
Implémente | ISort |
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
A partir de Flex 4.5, Adobe vous recommande d’utiliser la classe spark.collections.Sort comme alternative à cette classe. |
Fournit les informations de tri requises pour réaliser un tri dans une vue existante (interface ICollectionView ou classe implémentant l’interface). Après avoir affecté une instance Sort à la propriété
sort
de la vue, vous devez appeler la méthode refresh()
de la vue pour appliquer les critères de tri. Le tri est généralement défini pour des collections d’éléments complexes, c’est-à-dire pour des collections dans lesquelles le tri est réalisé sur une ou plusieurs propriétés des objets de la collection. L’exemple suivant illustre cette utilisation :
var col:ICollectionView = new ArrayCollection();
// In the real world, the collection would have more than one item.
col.addItem({first:"Anders", last:"Dickerson"});
// Create the Sort instance.
var sort:Sort = new Sort();
// Set the sort field; sort on the last name first, first name second.
// Both fields are case-insensitive.
sort.fields = [new SortField("last",true), new SortField("first",true)];
// Assign the Sort object to the view.
col.sort = sort;
// Apply the sort to the collection.
col.refresh();
Dans certaines situations, la collection contient des éléments simples de type String
, Date
, Boolean
, etc. Dans ce cas, appliquez le tri directement au type simple. Lorsque vous réalisez un tri pour des éléments simples, utilisez un seul champ de tri et spécifiez la valeur null
pour le (premier) paramètre name
du constructeur d’objet SortField. Par exemple :
var col:ICollectionView = new ArrayCollection();
col.addItem("California");
col.addItem("Arizona");
var sort:Sort = new Sort();
// There is only one sort field, so use a null
// first parameter.
sort.fields = [new SortField(null, true)];
col.sort = sort;
col.refresh();
Les implémentations Flex de l’interface ICollectionView extraient tous les éléments d’un emplacement distant avant de procéder au tri. Si vous utilisez la pagination avec une liste triée, appliquez le tri à la collection distante avant d’extraire les données.
Par défaut, cette classe de tri ne permet pas d’effectuer correctement un tri spécifique par langue des chaînes de caractères. Pour ce type de tri, reportez-vous aux classes spark.collections.Sort
et spark.collections.SortField
.
The <mx:Sort>
tag has the following attributes:
<mx:Sort Properties compareFunction="Internal compare function" fields="null" unique="false | true" />
In case items have inconsistent data types or items have complex data types, the use of the default built-in compare functions is not recommended. Inconsistent sorting results may occur in such cases. To avoid such problem, provide a custom compare function and/or make the item types consistent.
Just like any other AdvancedStyleClient
-based classes,
the Sort
and SortField
classes do not have a
parent-child relationship in terms of event handling. Locale changes in a
Sort
instance are not dispatched to its SortField
instances automatically. The only exceptional case is the internal default
SortField
instance used when no explicit fields are provided.
In this case, the internal default SortField
instance follows
the locale style that the owner Sort
instance has.
Propriété MXML par défautfields
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
compareFunction : Function
Méthode utilisée pour comparer des éléments lors du tri. | Sort | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
fields : Array
Tableau d’objets ISortField spécifiant les champs à comparer. | Sort | ||
unique : Boolean
Indique si le tri doit être unique. | Sort |
Méthode | Défini par | ||
---|---|---|---|
Sort()
Constructeur. | Sort | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Retrouve l’objet spécifié dans le tableau spécifié (ou le point d’insertion s’il est demandé) et renvoie l’index si cet objet est retrouvé, ou -1 dans le cas contraire. | Sort | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Renvoie une valeur indiquant si la propriété spécifiée est utilisée dans le contrôle du tri. | Sort | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Parcourt le tableau fields et appelle la méthode reverse() sur chacun des objets ISortField dans le tableau. | Sort | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Applique le tri actuel au tableau spécifié et non à une copie. | Sort | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher |
Constante | Défini par | ||
---|---|---|---|
ANY_INDEX_MODE : String = "any" [statique]
Lors de l’exécution d’une recherche, renvoie l’index d’un élément correspondant. | Sort | ||
FIRST_INDEX_MODE : String = "first" [statique]
Lors de l’exécution d’une recherche, renvoie l’index du premier élément correspondant. | Sort | ||
LAST_INDEX_MODE : String = "last" [statique]
Lors de l’exécution d’une recherche, renvoie l’index du dernier élément correspondant. | Sort |
compareFunction | propriété |
compareFunction:Function
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Méthode utilisée pour comparer des éléments lors du tri. Si vous spécifiez cette propriété, Flex ignore les propriétés compareFunction
que vous spécifiez dans les objets ISortField
utilisés dans cette classe.
La fonction de comparaison doit présenter la signature suivante :
function [name](a:Object, b:Object, fields:Array = null):int
Cette fonction doit renvoyer les valeurs suivantes : value:
- -1, si
Object a
doit apparaître avantObject b
dans l’ordre de tri. - 0, si
Object a
est égal àObject b
. - 1, si
Object a
doit apparaître aprèsObject b
dans l’ordre de tri.
Pour renvoyer à la fonction de comparaison interne, définissez cette valeur sur null
.
Le tableau fields
spécifie les champs d’objet à comparer. En général, l’algorithme compare les propriétés jusqu’à ce que la fin de la liste des champs soit atteinte ou jusqu’à ce qu’une valeur autre que zéro puisse être renvoyée. Par exemple :
function myCompare(a:Object, b:Object, fields:Array = null):int
{
var result:int = 0;
var i:int = 0;
var propList:Array = fields ? fields : internalPropList;
var len:int = propList.length;
var propName:String;
while (result == 0 && (i < len))
{
propName = propList[i];
result = compareValues(a[propName], b[propName]);
i++;
}
return result;
}
function compareValues(a:Object, b:Object):int
{
if (a == null && b == null)
return 0;
if (a == null)
return 1;
if (b == null)
return -1;
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
La valeur par défaut est une fonction de comparaison interne qui réalise une comparaison de chaîne, de nombre ou de date dans l’ordre croissant ou décroissant. Spécifiez votre propre fonction uniquement si vous souhaitez disposer d’un algorithme de comparaison personnalisé. Normalement, cela est nécessaire uniquement lorsqu’un champ calculé est utilisé dans un affichage.
Vous pouvez également spécifier des fonctions de comparaison séparées pour chaque champ de tri, en utilisant la propriété compareFunction
de la classe ISortField
. Il est ainsi possible d’utiliser la comparaison par défaut pour certains champs et une comparaison personnalisée pour d’autres.
Implémentation
public function get compareFunction():Function
public function set compareFunction(value:Function):void
fields | propriété |
fields:Array
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Composant Array
d’objets ISortField
spécifiant les champs à comparer. L’ordre des objets ISortField dans le tableau détermine l’ordre de priorité des champs lors du tri. Le comparateur de tri par défaut vérifie les champs de tri dans l’ordre du tableau, jusqu’à ce qu’il détermine un ordre de tri pour les deux champs comparés.
La valeur par défaut est null.
Cette propriété peut être utilisée comme source de la liaison de données. Lorsque cette propriété est modifiée, elle distribue l’événement fieldsChanged
.
Implémentation
public function get fields():Array
public function set fields(value:Array):void
Eléments de l’API associés
unique | propriété |
unique:Boolean
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Indique si le tri doit être unique. Les tris uniques échouent si une valeur ou une combinaison de valeurs spécifiée par les champs de la propriété fields engendre un ordre de tri indéterminé ou non unique, par exemple lorsque deux éléments ou plus ont les mêmes valeurs de tri. Une erreur est renvoyée si le tri n’est pas unique. La logique de tri utilise cette valeur de propriété unique
seulement si les champs de tri sont spécifiés de façon explicite. En l’absence de champs de tri spécifiés de façon explicite, aucune erreur n’est renvoyée, même lorsqu’il existe des éléments de valeur identique.
La valeur par défaut est false.
Implémentation
public function get unique():Boolean
public function set unique(value:Boolean):void
Sort | () | Constructeur |
public function Sort()
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Constructeur.
Crée un nouvel objet Sort dont aucun champ n’est défini et qui ne contient aucun comparateur personnalisé.
findItem | () | méthode |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Retrouve l’objet spécifié dans le tableau spécifié (ou le point d’insertion s’il est demandé) et renvoie l’index si cet objet est retrouvé, ou -1 dans le cas contraire. Les méthodes findxxx()
de la classe ListCollectionView
utilisent cette méthode pour retrouver l’élément demandé. Bien souvent, il est plus simple d’utiliser ces fonctions plutôt que la méthode findItem()
pour retrouver des données dans les objets ListCollectionView
. Appelez directement la méthode findItem()
lorsque vous écrivez une classe prenant en charge le tri, par exemple une nouvelle implémentation ICollectionView
. Le tableau d’éléments en entrée doit être trié avant l’appel de cette fonction. Dans le cas contraire, cette fonction ne peut pas trouver la valeur spécifiée correctement.
Paramètres
items:Array — Tableau dans lequel la recherche doit être réalisée.
| |||||||
values:Object — Objet contenant les propriétés à rechercher (ou l’objet à rechercher lui-même). L’objet doit se composer de paires nom/valeur, où les noms de champ sont les noms des champs spécifiés par la propriété fields , dans l’ordre dans lequel ils sont utilisés dans cette propriété. Il n’est pas obligatoire de spécifier tous les champs de la propriété fields , mais vous ne pouvez pas ignorer des champs si d’autres champs figurant après dans la séquence sont définis. Par conséquent, si la propriété fields contient trois champs, vous pouvez spécifier les premier et deuxième champs de ce paramètre, mais vous ne pouvez pas spécifier uniquement les premier et troisième champs.
| |||||||
mode:String — Chaîne contenant le type de recherche à réaliser. Valeurs valides :
| |||||||
returnInsertionIndex:Boolean (default = false ) — Si la méthode ne retrouve pas d’élément identifié par le paramètre values et que la valeur de ce paramètre est true , la méthode findItem() renvoie le point d’insertion des valeurs, c’est-à-dire le point où vous devez insérer l’élément, dans l’ordre de tri.
| |||||||
compareFunction:Function (default = null ) — Fonction de comparaison à utiliser pour retrouver l’élément. Si vous ne spécifiez pas ce paramètre ou si vous spécifiez une valeur null , la fonction findItem() utilise la fonction de comparaison déterminée par la propriété compareFunction de l’instance ISort et transmet le tableau de champs déterminé par l’objet de valeurs et les objets SortField actuels. Si vous fournissez une valeur non nulle, la fonction findItem() l’utilise en tant que fonction de comparaison. La signature de la fonction transmise comme compareFunction doit avoir la forme suivante : function myCompareFunction(a:Object, b:Object):int . Notez l’absence de troisième argument contrairement à la fonction de comparaison pour la propriété ISort.compareFunction() .
|
int — int Index de l’élément retrouvé dans le tableau. Si la valeur du paramètre returnInsertionIndex est false et que l’élément est introuvable, la valeur renvoyée est -1. Si la valeur du paramètre returnInsertionIndex est true et que l’élément est introuvable, la valeur renvoyée est l’index du point où les valeurs seraient insérées dans le tableau trié.
|
propertyAffectsSort | () | méthode |
public function propertyAffectsSort(property:String):Boolean
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Renvoie une valeur indiquant si la propriété spécifiée est utilisée dans le contrôle du tri. La fonction ne peut pas fournir une réponse définitive si le tri fait appel à un comparateur personnalisé. Dans ce cas, elle renvoie toujours la valeur true
.
Paramètres
property:String — Nom du champ à tester.
|
Boolean — Indique si la valeur de la propriété est susceptible d’influer sur le résultat du tri. Lorsque le tri utilise la fonction compareFunction par défaut, la valeur true est renvoyée si le paramètre property spécifie un champ de tri. Si le tri ou un objet ISortField utilisent un comparateur personnalisé, il est impossible de savoir si la propriété peut influer sur le résultat du tri. La valeur renvoyée est alors true .
|
reverse | () | méthode |
public function reverse():void
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Parcourt le tableau fields
et appelle la méthode reverse()
sur chacun des objets ISortField
dans le tableau. Si le champ était trié dans l’ordre décroissant, il est maintenant classé dans l’ordre croissant et inversement.
Remarque : une interface ICollectionView
n’est pas automatiquement mise à jour lorsque les objets du tableau fields
sont modifiés. Appelez sa méthode refresh()
pour actualiser la vue.
sort | () | méthode |
public function sort(items:Array):void
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Applique le tri actuel au tableau spécifié et non à une copie. Pour empêcher la modification du tableau, créez une copie et utilisez-la dans le paramètre items
.
Les implémentations Flex de l’interface ICollectionView
appellent automatiquement la méthode sort
et font en sorte que le tri soit réalisé sur une copie des données sous-jacentes.
Paramètres
items:Array — Tableau d’éléments à trier.
|
ANY_INDEX_MODE | Constante |
public static const ANY_INDEX_MODE:String = "any"
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Lors de l’exécution d’une recherche, renvoie l’index d’un élément correspondant.
FIRST_INDEX_MODE | Constante |
public static const FIRST_INDEX_MODE:String = "first"
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Lors de l’exécution d’une recherche, renvoie l’index du premier élément correspondant.
LAST_INDEX_MODE | Constante |
public static const LAST_INDEX_MODE:String = "last"
Version du langage: | ActionScript 3.0 |
Version du produit: | Flex 3 |
Versions du moteur d’exécution: | Flash Player 9, AIR 1.1 |
Lors de l’exécution d’une recherche, renvoie l’index du dernier élément correspondant.
Tue Jun 12 2018, 09:30 AM Z