ActionScript® 3.0 Reference for the Adobe® Flash® Platform
Home  |  Show Packages and Classes List |  Packages  |  Classes  |  What's New  |  Index  |  Appendixes
mx.collections 

Grouping  - AS3 Flex

Packagemx.collections
Classpublic class Grouping
InheritanceGrouping Inheritance Object

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

The Grouping class defines the fields in the data provider of the AdvancedDataGrid control used to group data. You use this class to create groups when the input data to the AdvancedDataGrid control has a flat structure.

To populate the AdvancedDataGrid control with grouped data, you create an instance of the GroupingCollection class from your flat data, and then pass that GroupingCollection instance to the data provider of the AdvancedDataGrid control. To specify the grouping fields of your flat data, you pass a Grouping instance to the GroupingCollection.grouping property. The Grouping instance contains an Array of GroupingField instances, one per grouping field.

The following example uses the Grouping class to define two grouping fields: Region and Territory.

  <mx:AdvancedDataGrid id="myADG"    
    <mx:dataProvider> 
      <mx:GroupingCollection id="gc" source="{dpFlat}"> 
        <mx:grouping> 
          <mx:Grouping> 
            <mx:GroupingField name="Region"/> 
            <mx:GroupingField name="Territory"/> 
          </mx:Grouping> 
        </mx:grouping> 
      </mx:GroupingCollection> 
    </mx:dataProvider>  
     
    <mx:columns> 
      <mx:AdvancedDataGridColumn dataField="Region"/> 
      <mx:AdvancedDataGridColumn dataField="Territory"/> 
      <mx:AdvancedDataGridColumn dataField="Territory_Rep"/> 
      <mx:AdvancedDataGridColumn dataField="Actual"/> 
      <mx:AdvancedDataGridColumn dataField="Estimate"/> 
    </mx:columns> 
  </mx:AdvancedDataGrid>
  

MXML SyntaxexpandedHide MXML Syntax
The <mx.Grouping> tag defines the following tag attributes:
  <mx:Grouping
  Properties 
    compareFunction="No default"
    fields="null"
    groupingObjectFunction="No default"
    label="GroupLabel"
  />
  

Default MXML Propertyfields

Related API Elements



Public Properties
 PropertyDefined By
  compareFunction : Function
The method used to compare items when sorting.
Grouping
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  fields : Array
An Array of GroupingField objects that specifies the fields used to group the data.
Grouping
  groupingObjectFunction : Function
A callback function to run on each group node to determine the grouping object.
Grouping
  label : String = "GroupLabel"
The name of the field added to the flat data to create the hierarchy.
Grouping
Public Methods
 MethodDefined By
  
Constructor.
Grouping
 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
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 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
Property Detail

compareFunction

property
compareFunction:Function

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

The method used to compare items when sorting. If you specify this property, Flex ignores any compareFunction properties that you specify in the SortField objects that you use in this class.

The compare function must have the following signature:

         function [name](a:Object, b:Object, fields:Array=null):int

This function must return the following:

  • -1, if a should appear before b in the sorted sequence.
  • 0, if a equals b.
  • 1, if a should appear after b in the sorted sequence.

To return to the internal comparison function, set this value to null.

The fields Array specifies the object fields to compare. Typically, the algorithm will compare properties until the field list is exhausted or a non-zero value can be returned. For example:

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

The default value is an internal compare function that can perform a string, numeric, or date comparison in ascending or descending order, with case-sensitive or case-insensitive string comparisons. Specify your own function only if you need a custom comparison algorithm. This is normally only the case if a calculated field is used in a display.

Alternatively, you can specify separate compare functions for each sort field by using the SortField class compare property. This way you can use the default comparison for some fields and a custom comparison for others.



Implementation
    public function get compareFunction():Function
    public function set compareFunction(value:Function):void

fields

property 
fields:Array

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

An Array of GroupingField objects that specifies the fields used to group the data. The order of the GroupingField objects in the Array determines field priority order when sorting.

The default value is null.



Implementation
    public function get fields():Array
    public function set fields(value:Array):void

Related API Elements

groupingObjectFunction

property 
public var groupingObjectFunction:Function

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

A callback function to run on each group node to determine the grouping object. By default, a new Object will be created for group nodes.

You can supply a groupingObjectFunction that provides the appropriate Object for group nodes.

The method signature is:

      myGroupObjectFunction(label:String):Object

Where label contains the value that will be shown for that group node. The function returns an Object which will be used for group nodes.

For example, a groupingObjectFunction which returns an Object containing a "name" property with value as "Bob" can be written as -
      private function groupObjFunction(label:String):Object
      {
          var obj:Object = {};
          obj.name = "Bob";
     
          return obj;
      }
      

label

property 
public var label:String = "GroupLabel"

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

The name of the field added to the flat data to create the hierarchy. The value of the top nodes (nodes representing the group fields) in every group will be represented by this property. Use this property to specify a different name.

The default value is GroupLabel.

Constructor Detail

Grouping

()Constructor
public function Grouping()

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Constructor.