BETA ActionScript® 3.0 Reference for the Adobe® Flash® Platform
Home  |  Hide Packages and Classes List |  Packages  |  Classes  |  What's New  |  Index  |  Appendixes

Language Reference only
Filters: AIR 32.0 and earlier, Flash Player 32.0 and earlier, Flash Lite 4
None
Hide Filters
spark.collections 

Sort  - AS3 Flex

(Preview)
Packagespark.collections
Classpublic class Sort
InheritanceSort Inheritance AdvancedStyleClient Inheritance EventDispatcher Inheritance Object
Implements ISort

Language Version: ActionScript 3.0
Product Version: Flex 4.5
Runtime Versions: Flash Player 10.1, AIR 2.5

Provides the sorting information required to establish a sort on an existing view (ICollectionView interface or class that implements the interface). After you assign a Sort instance to the view's sort property, you must call the view's refresh() method to apply the sort criteria.

Typically the sort is defined for collections of complex items, that is collections in which the sort is performed on one or more properties of the objects in the collection. The following example shows this use:


     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:ISort = new Sort();
 
     // Set the sort field; sort on the last name first, first name second.
     var sortfieldLastName:ISortField = new SortField("last",true);
     var sortfieldFirstName:ISortField = new SortField("first",true);
 
     // Set the locale style to "en-US" to cause the strings
     // to be ordered according to the rules for English as used in the USA.
     sortfieldLastName.setStyle("locale","en-US");
     sortfieldFirstName.setStyle("locale","en-US");
     sort.fields = [sortfieldLastName, sortfieldFirstName];
 
     // Assign the Sort object to the view.
     col.sort = sort;
 
     // Apply the sort to the collection.
     col.refresh();
  

There are situations in which the collection contains simple items, like String, Date, Boolean, etc. In this case, apply the sort to the simple type directly. When constructing a sort for simple items, use a single sort field, and specify a null name (first) parameter in the SortField object constructor. For example:


     import mx.collections.ArrayCollection;
     import spark.collections.Sort;
     import spark.collections.SortField;
 
     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. 
     var sortfield:SortField = new SortField("null",true);
 
     // Set the locale style to "en-US" to set the language for the sort.
     sortfield.setStyle("locale","en-US");
     sort.fields = [sortfield];
     col.sort = sort;
     col.refresh();
  

The Flex implementations of the ICollectionView interface retrieve all items from a remote location before executing a sort. If you use paging with a sorted list, apply the sort to the remote collection before you retrieve the data.

The default comparison provided by the SortField class provides correct language specific sorting for strings. The language is selected by the setting the locale style on an instance of the class in one of the following ways:

  • By using the class in an MXML declaration and inheriting the locale from the document that contains the declaration.
  • Example:
      <fx:Declarations> 
             <s:SortField id="sf" /> 
      </fx:Declarations>
      
  • By using an MXML declaration and specifying the locale value in the list of assignments.
  • Example:
      <fx:Declarations> 
          <s:SortField id="sf_SimplifiedChinese" locale="zh-Hans-CN" /> 
      </fx:Declarations>
      
  • Calling the setStyle method, e.g. sf.setStyle("locale", "zh-Hans-CN")
  • Inheriting the style from a UIComponent by calling the UIComponent's addStyleClient() method.

MXML SyntaxexpandedHide MXML Syntax

The <s:Sort> tag has the following attributes:

  <s:Sort
  Properties
  compareFunction="Internal compare function"
  fields="null"
  unique="false | true"
  />
  

In case items have inconsistent data types or items have complex data types, use of default built-in compare functions is not desired. Inconsistent sort result may occur in such cases. To avoid such problem, provide custom compare function and/or make item types consistent.

Default MXML Propertyfields

View the examples

More examples

Related API Elements



Public Properties
 PropertyDefined By
  compareFunction : Function
The method used to compare items when sorting.
Sort
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  fields : Array
An Array of ISortField objects that specifies the fields to compare.
Sort
  unique : Boolean
Indicates if the sort should be unique.
Sort
Public Methods
 MethodDefined By
  
Constructor.
Sort
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
EventDispatcher
 Inherited
Dispatches an event into the event flow.
EventDispatcher
  
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Finds the specified object within the specified array (or the insertion point if asked for), returning the index if found or -1 if not.
Sort
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
  
Return whether the specified property is used to control the sort.
Sort
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
  
Goes through the fields array and calls reverse() on each of the ISortField objects in the array.
Sort
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
  
sort(items:Array):void
Apply the current sort to the specified array (not a copy).
Sort
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active.EventDispatcher
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive.EventDispatcher
Styles

Styles are either common or associated with a specific theme. If the style is common, it can be used with any theme. If a style is associated with a specific theme, it can only be used if your application uses that theme.

Common Styles
 Style Description Defined By
  
locale
Type: String CSS Inheritance: Yes
Language Version: ActionScript 3.0  Product Version: Flex 4.5  Runtime Versions: Flash10.1, AIR 2.5

The locale identifier that specifies the language, region, script and optionally other related tags and keys. The syntax of this identifier must follow the syntax defined by the Unicode Technical Standard #35 (for example, en-US, de-DE, zh-Hans-CN).

For browser based apps, the default locale is based on the language settings from the browser. (Note that this is not the browser UI language that is available from Javascript, but rather is the list of preferred locales for web pages that the user has set in the browser preferences.) For AIR applications, the default UI locale is based on the user's system preferences.

Learn more

Sort
Public Constants
 ConstantDefined By
  ANY_INDEX_MODE : String = "any"
[static] When executing a find return the index any matching item.
Sort
  FIRST_INDEX_MODE : String = "first"
[static] When executing a find return the index for the first matching item.
Sort
  LAST_INDEX_MODE : String = "last"
[static] When executing a find return the index for the last matching item.
Sort
Property Detail
Constructor Detail
Method Detail
Constant Detail
SortExample1.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600">
    <!-- Sample program for spark.collections.Sort and SortField --> 
    <fx:Declarations>
        <s:Sort id="sortbyLastName_FirstName">
            <s:fields>
                <s:SortField name="last"/>
                <s:SortField name="first"/>
            </s:fields>
        </s:Sort>
        <mx:ArrayCollection id="collection" sort="{sortbyLastName_FirstName}">
            <mx:source>
                <fx:Object first="Anders" last="Dickerson"/>
                <fx:Object first="Eileen" last="Maccormick"/>
                <fx:Object first="Aiden" last="MacCormick"/>
                <fx:Object first="Steve" last="MacGregor"/>
            </mx:source>
        </mx:ArrayCollection>
    </fx:Declarations>
    
    <s:VGroup>
        <s:VGroup>
            <s:HGroup>
                <s:Label text="Input Locale ID Name: "/>
                <s:TextInput id="inputLocaleIDName"/>
                <!-- 
                Sets the locale style on the document UI component.
                The SortField and Sort objects defined in the 
                fx:Declarations section will inherit this style.
                -->
                <s:Button click="{setStyle('locale', inputLocaleIDName.text); 
                          collection.refresh()}" label="Apply"/>
            </s:HGroup>
            <s:Label text="Example: 'en-US', 'fr-FR', 'zh-CN', 'ar-SA'"/>
        </s:VGroup>
        <s:DataGrid dataProvider="{collection}" width="100%"
                     creationComplete="{collection.refresh()}">
            <s:columns>
                <s:ArrayList>
                    <s:GridColumn dataField="last"/>
                    <s:GridColumn dataField="first"/>
                </s:ArrayList>
            </s:columns>
        </s:DataGrid>
    </s:VGroup>
</s:Application>
SortExample2.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600"
               creationComplete="initApp()">
    <!-- Sample program for spark.collections.Sort and SortField -->    
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import spark.collections.*;
            [Bindable]
            private var collection:ArrayCollection = new ArrayCollection();
            
            private function localeChange():void
            {
                // Sets the locale style on this application.
                // The SortField objects will inherit this style.
                setStyle('locale', inputLocaleIDName.text);
                collection.refresh();
            }

            private function initApp() : void
            {
                // Add data to the collection.
                collection.addItem({first:"Anders", last:"Dickerson"});
                collection.addItem({first:"Steve", last:"Maccormick"});
                collection.addItem({first:"Aiden", last:"MacCormick"});
                collection.addItem({first:"Eileen", last:"MacGregor"});
                
                // Create the Sort instance.
                var sort:Sort = new Sort();
                
                // Set the sort field; sort on the last name first, first name 
                // second.
                var sortfieldLastName:SortField = new SortField("last",true);
                var sortfieldFirstName:SortField = new SortField("first",true);
                sort.fields = [sortfieldLastName, sortfieldFirstName];
                
                // Add the sort field objects to this application's list of
                // style clients.  This will cause the sort field objects to 
                // inherit the locale style from this Application. 
                addStyleClient(sortfieldLastName);
                addStyleClient(sortfieldFirstName);
                
                // Assign the Sort object to the view.
                collection.sort = sort;
                
                // Apply the sort to the collection.
                collection.refresh();
            }
        ]]>
    </fx:Script>
    
    <s:VGroup>
        <s:VGroup>
            <s:HGroup>
                <s:Label text="Input Locale ID Name: "/>
                <s:TextInput id="inputLocaleIDName"/>
                <s:Button click="localeChange()" label="Apply"/>
            </s:HGroup>
            <s:Label text="Example: 'en-US', 'fr-FR', 'zh-CN', 'ar-SA'"/>
        </s:VGroup>
        
        <s:DataGrid dataProvider="{collection}" width="100%"
                     creationComplete="{collection.refresh()}">
            <s:columns>
                <s:ArrayList>
                    <s:GridColumn dataField="last"/>
                    <s:GridColumn dataField="first"/>
                </s:ArrayList>
            </s:columns>
        </s:DataGrid>
    </s:VGroup>
</s:Application>