Paket | mx.collections |
Klasse | public class Sort |
Vererbung | Sort EventDispatcher Object |
Implementiert | ISort |
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Beginnend mit Flex 4.5 empfiehlt Adobe die Verwendung der Klasse spark.collections.Sort als Alternative zu dieser Klasse. |
Stellt die Sortierinformationen bereit, die erforderlich sind, um eine Sortierung für eine vorhandene Ansicht durchzuführen (ICollectionView-Schnittstelle oder Klasse, die die Schnittstelle implementiert). Nachdem Sie der
sort
-Eigenschaft der Ansicht eine Sort-Instanz zugewiesen haben, müssen Sie die refresh()
-Methode der Ansicht aufrufen, um die Sortierkriterien anzuwenden. Normalerweise wird die Sortierung für Sammlungen komplexer Elemente definiert, also für Sammlungen, in denen die Sortierung einer oder mehrerer Eigenschaften der Objekte in der Sammlung durchgeführt wird. Das folgende Beispiel veranschaulicht diese Verwendung:
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();
Es gibt Situationen, in denen die Sammlung einfache Elemente enthält, wie String
, Date
, Boolean
usw. In diesem Fall wird die Sortierung direkt auf den einfachen Typ angewendet. Bei der Erstellung einer Sortierung für einfache Elemente verwenden Sie ein einzelnes Sortierfeld und geben im SortField-Objektkonstruktor einen (ersten) Parameter null
name
an. Beispiel:
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();
Die Flex-Implementierungen der ICollectionView-Schnittstelle rufen alle Elemente von einer Remote-Position ab, bevor eine Sortierung durchgeführt wird. Wenn Sie bei einer sortierten Liste Paging verwenden, wenden Sie die Sortierung auf die Remote-Sammlung an, bevor Sie die Daten abrufen.
Standardmäßig stellt diese Sort-Klasse keine korrekte sprachspezifische Sortierung für Strings bereit. Weitere Informationen zu dieser Sortierungsart finden Sie unter den spark.collections.Sort
- und spark.collections.SortField
-Klassen.
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.
Standard-MXML-Eigenschaftfields
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
compareFunction : Function
Die Methode, die für den Vergleich von Elementen bei der Sortierung verwendet wird. | Sort | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
fields : Array
Ein Array von ISortField-Objekten, das die zu vergleichenden Felder angibt. | Sort | ||
unique : Boolean
Gibt an, ob die Sortierung eindeutig sein soll. | Sort |
Methode | Definiert von | ||
---|---|---|---|
Sort()
Konstruktor. | Sort | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Sucht das angegebene Objekt im angegebenen Array (oder ggf. die Einfügemarke) und gibt die Indexposition zurück, falls sie gefunden wird, andernfalls -1. | Sort | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt zurück, ob die angegebene Eigenschaft zur Steuerung der Sortierung verwendet wird. | Sort | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Durchläuft das Feldarray und ruft reverse() für jedes ISortField-Objekt im Array auf. | Sort | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Die aktuelle Sortierung auf das angegebene Array anwenden (keine Kopie davon). | Sort | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
Konstante | Definiert von | ||
---|---|---|---|
ANY_INDEX_MODE : String = "any" [statisch]
Bei der Ausführung einer Suche den Index für alle übereinstimmenden Elemente zurückgeben. | Sort | ||
FIRST_INDEX_MODE : String = "first" [statisch]
Bei der Ausführung einer Suche den Index für das erste übereinstimmende Element zurückgeben. | Sort | ||
LAST_INDEX_MODE : String = "last" [statisch]
Bei der Ausführung eines Suche den Index für das letzte übereinstimmende Element zurückgeben. | Sort |
compareFunction | Eigenschaft |
compareFunction:Function
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Die Methode, die für den Vergleich von Elementen bei der Sortierung verwendet wird. Wenn Sie diese Eigenschaft angeben, ignoriert Flex alle compareFunction
-Eigenschaften, die Sie in den ISortField
-Objekten angeben, die Sie in dieser Klasse verwenden.
Die Vergleichsfunktion muss folgende Signatur haben:
function [name](a:Object, b:Object, fields:Array = null):int
Diese Funktion muss Folgendes zurückgeben value:
- -1, wenn das
Object a
vor demObject b
in der sortierten Sequenz erscheinen soll - 0, wenn
Object a
Object b
entspricht - 1, wenn das
Object a
nach demObject b
in der sortierten Sequenz erscheinen soll
Um zur internen Vergleichsfunktion zurückzukehren, setzen Sie diesen Wert auf null
.
Das fields
-Array gibt die zu vergleichenden Objektfelder an. Normalerweise vergleicht der Algorithmus Eigenschaften, bis die Feldliste abgearbeitet wurde oder ein Wert ungleich null zurückgegeben werden kann. Beispiel:
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;
}
Der Standardwert ist eine interne Vergleichsfunktion, die einen Vergleich von Strings, numerischen Werten oder Datumsangaben in aufsteigender oder absteigender Reihenfolge durchführen kann. Geben Sie Ihre eigene Funktion nur an, wenn ein benutzerdefinierter Vergleichsalgorithmus erforderlich ist. Dies ist normalerweise nur der Fall, wenn ein berechnetes Feld in einer Anzeige verwendet wird.
Alternativ dazu können Sie für jedes Sortierfeld mithilfe der compareFunction
-Eigenschaft der ISortField
-Klasse eigene Vergleichsfunktionen festlegen. Auf diese Weise können Sie für bestimmte Felder den Standardvergleich und für andere Felder einen benutzerdefinierten Vergleich verwenden.
Implementierung
public function get compareFunction():Function
public function set compareFunction(value:Function):void
fields | Eigenschaft |
fields:Array
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Ein Array
von ISortField
-Objekten, das die zu vergleichenden Felder angibt. Die Reihenfolge der ISortField-Objekte im Array bestimmt die Reihenfolge der Feldpriorität bei der Sortierung. Der Standardsortierkomparator prüft die Sortierfelder in der Arrayreihenfolge, bis eine Sortierreihenfolge für die beiden verglichenen Felder bestimmt werden kann.
Der Standardwert ist null.
Diese Eigenschaft kann als Quelle für die Datenbindung verwendet werden. Beim Ändern dieser Eigenschaft wird das fieldsChanged
-Ereignis ausgelöst.
Implementierung
public function get fields():Array
public function set fields(value:Array):void
Verwandte API-Elemente
unique | Eigenschaft |
unique:Boolean
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Gibt an, ob die Sortierung eindeutig sein soll. Eindeutige Sortierungen schlagen fehl, wenn ein Wert oder kombinierter Wert, der von den im Feldeigenschaftenergebnis aufgeführten Feldern angegeben wird, eine unbestimmte oder nicht-eindeutige Sortierreihenfolge ergibt, d. h., wenn zwei oder mehr Elemente identische Sortierfeldwerte haben. Ein Fehler wird ausgegeben, wenn die Sortierung nicht eindeutig ist. Die Sortierungslogik verwendet diesen unique
-Eigenschaftswert nur, wenn jedes Sortierfeld explizit festgelegt wird. Wenn kein Sortierfeld explizit festgelegt wird, wird kein Fehler ausgegeben, selbst wenn identische Wertelemente vorhanden sind.
Der Standardwert ist false.
Implementierung
public function get unique():Boolean
public function set unique(value:Boolean):void
Sort | () | Konstruktor |
public function Sort()
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Konstruktor.
Erstellt eine neue Sort-Instanz ohne eingerichtete Felder und benutzerdefinierten Komparator.
findItem | () | Methode |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Sucht das angegebene Objekt im angegebenen Array (oder ggf. die Einfügemarke) und gibt den Index zurück, falls er gefunden wird, andernfalls -1. Die findxxx()
-Methoden der ListCollectionView
-Klasse verwenden diese Methode, um das abgefragte Element zu suchen. Es ist im Allgemeinen einfacher, diese Funktionen anstelle von findItem()
zu verwenden, um Daten in ListCollectionView
-basierten Objekten zu suchen. Sie rufen die findItem()
-Methode direkt auf, wenn Sie eine Klasse schreiben, die die Sortierung unterstützt, wie etwa eine neue ICollectionView
-Implementierung. Das Eingabeelementarray muss vor dem Aufrufen dieser Funktion sortiert werden. Ansonsten kann diese Funktion den angegebenen Wert nicht richtig finden.
Parameter
items:Array — Das Array, in dem gesucht werden soll.
| |||||||
values:Object — Objekt, das die zu suchenden Eigenschaften enthält (oder das zu suchende Objekt selbst). Das Objekt muss aus Feldnamen/Werte-Paaren bestehen, wobei die Feldnamen die Namen von Feldern sind, die von der fields -Eigenschaft festgelegt wurden, und dieselbe Reihenfolge haben, in der sie in dieser Eigenschaft verwendet werden. Sie müssen nicht alle Felder aus der fields -Eigenschaft angeben, doch es ist nicht möglich, Felder in der Reihenfolge zu überspringen. Wenn die fields -Eigenschaft drei Felder auflistet, können Sie daher das erste und das zweite Feld in diesem Parameter angeben, nicht jedoch das erste und das dritte Feld.
| |||||||
mode:String — String, der den Typ des auszuführenden Suchvorgangs enthält. Gültige Werte sind:
| |||||||
returnInsertionIndex:Boolean (default = false ) — Wenn die Methode kein vom values -Parameter identifiziertes Element findet und dieser Parameter true ist, gibt die findItem() -Methode die Einfügemarke für die Werte zurück. Dies ist die Stelle in der sortierten Reihenfolge, an der das Element eingefügt werden soll.
| |||||||
compareFunction:Function (default = null ) — Eine Komparator-Funktion zum Suchen des Elements. Wenn Sie diesen Parameter nicht angeben oder einen null -Wert bereitstellen, verwendet die findItem() -Funktion die von der compareFunction -Eigenschaft der ISort -Instanz festgelegte Vergleichsfunktion, die in den vom Werteobjekt und den derzeitigen SortFields bestimmten Feldarray übergeben wurde. Wenn Sie einen anderen Wert als null bereitstellen, verwendet die findItem() -Funktion diesen als die Vergleichsfunktion. Die Signatur der Funktion, die als compareFunction übergeben wurde, muss wie folgt lauten: function myCompareFunction(a:Object, b:Object):int . Beachten Sie, dass es kein drittes Argument gibt, im Gegensatz zur Vergleichsfunktion für die ISort.compareFunction() -Eigenschaft.
|
int — int Die Indexposition im Array des gefundenen Elements. Wenn der Parameter returnInsertionIndex den Wert false hat und das Element nicht gefunden wird. Gibt -1 zurück. Wenn der Parameter returnInsertionIndex den Wert true hat und das Element nicht gefunden wird, wird der Index des Punkts im sortierten Array zurückgegeben, an dem die Werte eingefügt würden.
|
propertyAffectsSort | () | Methode |
public function propertyAffectsSort(property:String):Boolean
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Gibt zurück, ob die angegebene Eigenschaft zur Steuerung der Sortierung verwendet wird. Die Funktion kann keine definitive Antwort ermitteln, wenn die Sortierung einen benutzerdefinierten Komparator verwendet. Sie gibt in diesem Fall immer true
zurück.
Parameter
property:String — Der Name des zu testenden Felds.
|
Boolean — Ob der Eigenschaftswert Einfluss auf das Sortierergebnis haben kann. Wenn die Sortierung die compareFunction-Standardfunktion verwendet, wird true zurückgegeben, wenn der property -Parameter ein Sortierfeld angibt. Wenn die Sortierung oder ein beliebiges ISortField einen benutzerdefinierten Komparator verwendet, ist es nicht möglich, dies zu ermitteln. Daher wird true zurückgegeben.
|
reverse | () | Methode |
public function reverse():void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Durchläuft das fields
-Array und ruft reverse()
für jedes ISortField
-Objekt im Array auf. Wenn das Feld absteigend sortiert war, ist es nun aufsteigend sortiert und umgekehrt.
Hinweis: Eine ICollectionView
wird nicht automatisch aktualisiert, wenn die Objekte im fields
-Array geändert werden. Rufen Sie zur Aktualisierung der Ansicht ihre refresh()
-Methode auf.
sort | () | Methode |
public function sort(items:Array):void
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Die aktuelle Sortierung auf das angegebene Array anwenden (keine Kopie davon). Um zu verhindern, dass das Array geändert wird, erstellen Sie eine Kopie und verwenden die Kopie im items
-Parameter.
ICollectionView
-Implementierungen von Flex rufen die sort
-Methode automatisch auf und stellen sicher, dass die Sortierung an einer Kopie der zugrunde liegenden Daten ausgeführt wird.
Parameter
items:Array — Array von zu sortierenden Elementen.
|
ANY_INDEX_MODE | Konstante |
public static const ANY_INDEX_MODE:String = "any"
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Bei der Ausführung einer Suche den Index für alle übereinstimmenden Elemente zurückgeben.
FIRST_INDEX_MODE | Konstante |
public static const FIRST_INDEX_MODE:String = "first"
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Bei der Ausführung einer Suche den Index für das erste übereinstimmende Element zurückgeben.
LAST_INDEX_MODE | Konstante |
public static const LAST_INDEX_MODE:String = "last"
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 3 |
Laufzeitversionen: | Flash Player 9, AIR 1.1 |
Bei der Ausführung einer Suche den Index für das letzte übereinstimmende Element zurückgeben.
Tue Jun 12 2018, 10:04 AM Z