<mx:SummaryField2 Properties dataField="No default" label="No default" summaryOperation="SUM" />]]>
Remarque : dans la version précédente de Flex, vous avez utilisé la classe SummaryField pour créer des données de résumé. La classe SummaryField2, une nouveauté de Flex 4, offre de meilleures performances que SummaryField.
Utilisez la propriété
L’exemple suivant crée des lignes de résumé à partir de deux champs issus du fournisseur de données du contrôle AdvancedDataGrid :
<mx:AdvancedDataGrid id="myADG" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:Grouping> <mx:GroupingField name="Region"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> <mx:GroupingField name="Territory"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> </mx:Grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
Par exemple, si vous définissez la propriété
{Summary:1000}
Cette propriété n’a aucun effet sur une source qui ne contient pas de nœud racine, par exemple des objets List ou Array.
Utilisez la propriété
L’exemple suivant crée des lignes de résumé à partir de deux champs issus du fournisseur de données du contrôle AdvancedDataGrid :
<mx:AdvancedDataGrid id="myADG" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:Grouping> <mx:GroupingField name="Region"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> <mx:GroupingField name="Territory"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> </mx:Grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
Cette classe, déconseillée, a été remplacée par la nouvelle classe
Par exemple, si vous définissez la propriété
{Summary:1000}
Utilisez cette propriété avec la propriété
La signature de la fonction doit se présenter comme suit :
function mySummaryFunction(iterator:IViewCursor, dataField:String, operation:String):Object
Les fonctions de résumé intégrées utilisant les valeurs
<mx:GroupingCollection2 Properties grouping="No default" source="No default" summaries="No default" />]]>
Remarque : dans la version précédente de Flex, vous avez utilisé la classe GroupingCollection avec le contrôle AdvancedDataGrid. La classe GroupingCollection2, une nouveauté de Flex 4, offre de meilleures performances que GroupingCollection.
Pour que des données groupées viennent remplir le contrôle AdvancedDataGrid, créez une occurrence de la classe GroupingCollection à partir des données à plat, puis transmettez cette occurrence GroupingCollection au fournisseur de données du contrôle AdvancedDataGrid. Pour spécifier les champs de regroupement des données à plat, transmettez une occurrence Grouping à la propriété
L’exemple suivant utilise la classe GroupingCollection pour définir deux champs de regroupement : Region et Territory.
<mx:AdvancedDataGrid id="myADG" <mx:dataProvider> <mx:GroupingCollection2 id="gc" source="{dpFlat}"> <mx:grouping> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:grouping> </mx:GroupingCollection2> </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>
La méthode
Lorsque la méthode
Dans une opération d’actualisation asynchrone, tous les groupes et les résumés sont mis à jour individuellement. La méthode
Le temps système de mise à jour individuelle des groupes et des résumés, plutôt que toutes en même temps, allonge le délai de l’actualisation asynchrone par rapport à une actualisation synchrone. Cependant, pour les grands ensembles de données, votre application continue de fonctionner lors de l’actualisation.
<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection2 id="gc" source="{dpFlat}"> <mx:summaries> <mx:SummaryRow summaryPlacement="last"> <mx:fields> <mx:SummaryField2 dataField="Actual" label="Min Actual" summaryOperation="MIN"/> <mx:SummaryField2 dataField="Actual" label="Max Actual" summaryOperation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:GroupingCollection2> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
Les nœuds ne doivent pas nécessairement contenir des enfants pour que la méthode renvoie
<mx:GroupingField Properties caseInsensitive="false|true" compareFunction="No default" descending="false|true" groupingFunction="No default" groupingObjectFunction="No default" name="null" numeric="false|true" summaries="No default" />]]>
Pour que des données groupées viennent remplir le contrôle AdvancedDataGrid, créez une occurrence de la classe GroupingCollection à partir des données à plat, puis transmettez cette occurrence GroupingCollection au fournisseur de données du contrôle AdvancedDataGrid. Pour spécifier les champs de regroupement des données à plat, transmettez une occurrence Grouping à la propriété
L’exemple suivant utilise la classe Grouping pour définir deux champs de regroupement : Region et 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>
Une fonction de rappel peut convertir un nombre correspondant au mois en chaîne pour le mois, ou regrouper plusieurs éléments dans un groupe en fonction de certains critères autres que la valeur actuelle du champ.
Pour l’objet GroupField, la signature de la méthode se présente comme suit :
groupingFunction(item:Object, field:GroupField):String
Où
private function groupFunc(item:Object, field:GroupingField):String { return item[field.name].toString().substr(0, 1); }
Vous pouvez spécifier une fonction
La signature de la méthode se présente comme suit :
myGroupObjectFunction(label:String):Object
Où
private function groupObjFunction(label:String):Object { var obj:Object = {}; obj.name = "Bob"; return obj; }
<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:Grouping> <mx:GroupingField name="Region"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> </mx:Grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
La fonction de comparaison doit présenter la signature suivante :
function myCompare(a:Object, b:Object):int
Cette fonction doit retourner les valeurs suivantes :
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, en prenant ou non en compte la casse des chaînes. 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.
<mx:Grouping Properties compareFunction="No default" fields="null" groupingObjectFunction="No default" label="GroupLabel" />]]>
Pour que des données groupées viennent remplir le contrôle AdvancedDataGrid, créez une occurrence de la classe GroupingCollection à partir des données à plat, puis transmettez cette occurrence GroupingCollection au fournisseur de données du contrôle AdvancedDataGrid. Pour spécifier les champs de regroupement des données à plat, transmettez une occurrence Grouping à la propriété
L’exemple suivant utilise la classe Grouping pour définir deux champs de regroupement : Region et 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>
Vous pouvez spécifier une fonction
La signature de la méthode se présente comme suit :
myGroupObjectFunction(label:String):Object
Où
private function groupObjFunction(label:String):Object { var obj:Object = {}; obj.name = "Bob"; return obj; }
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 :
Pour renvoyer à la fonction de comparaison interne, définissez cette valeur sur
Le tableau
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, en prenant ou non en compte la casse des chaînes. 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, à l’aide de la propriété
<mx:SummaryRow Properties fields="No default" summaryObjectFunction="No default" summaryPlacement="last" />]]>
La propriété
L’exemple suivant crée des lignes de résumé à partir de deux champs issus du fournisseur de données du contrôle AdvancedDataGrid :
<mx:AdvancedDataGrid id="myADG" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:Grouping> <mx:GroupingField name="Region"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> <mx:GroupingField name="Territory"> <mx:summaries> <mx:SummaryRow summaryPlacement="group"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> </mx:GroupingField> </mx:Grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
Utilisez cette propriété avec la propriété
La classe GroupingCollection ajoute à l’objet une propriété appelée
La fonction de rappel doit présenter la signature suivante :
function mySumObjFunc():SummaryObject {}
Vous pouvez spécifier plusieurs valeurs, séparées par une espace. Par exemple, la valeur
Les nœuds ne doivent pas nécessairement contenir des enfants pour que la méthode renvoie
<mx:GroupingCollection Properties grouping="No default" source="No default" summaries="No default" />
This Class has been deprecated and replaced by a new Class
GroupingCollection2
which provide faster,
improved performance and a new summary calculation mechanism.
Class SummaryField
has also been deprecated and
replaced by a new Class SummaryField2
.
Properties operation
and summaryFunction
are
not present in the Class SummaryField2
.
A new property summaryOperation
is introduced in
SummaryField2
.
Pour que des données groupées viennent remplir le contrôle AdvancedDataGrid, créez une occurrence de la classe GroupingCollection à partir des données à plat, puis transmettez cette occurrence GroupingCollection au fournisseur de données du contrôle AdvancedDataGrid. Pour spécifier les champs de regroupement des données à plat, transmettez une occurrence Grouping à la propriété
L’exemple suivant utilise la classe GroupingCollection pour définir deux champs de regroupement : Region et 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>
La méthode
Lorsque la méthode
<mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();"> <mx:dataProvider> <mx:GroupingCollection id="gc" source="{dpFlat}"> <mx:summaries> <mx:SummaryRow summaryPlacement="last"> <mx:fields> <mx:SummaryField dataField="Actual" label="Min Actual" operation="MIN"/> <mx:SummaryField dataField="Actual" label="Max Actual" operation="MAX"/> </mx:fields> </mx:SummaryRow> </mx:summaries> <mx:Grouping> <mx:GroupingField name="Region"/> <mx:GroupingField name="Territory"/> </mx:Grouping> </mx:GroupingCollection> </mx:dataProvider> <mx:columns> <mx:AdvancedDataGridColumn dataField="Region"/> <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/> <mx:AdvancedDataGridColumn dataField="Actual"/> <mx:AdvancedDataGridColumn dataField="Estimate"/> <mx:AdvancedDataGridColumn dataField="Min Actual"/> <mx:AdvancedDataGridColumn dataField="Max Actual"/> </mx:columns> </mx:AdvancedDataGrid>
Implémentez les méthodes de cette interface dans deux groupes. Le premier groupe comprend les méthodes
Le second groupe comprend les méthodes
La méthode
Lorsque la méthode
Dans une opération d’actualisation asynchrone, tous les groupes et les résumés sont mis à jour individuellement. La méthode
Le temps système de mise à jour individuelle des groupes et des résumés, plutôt que toutes en même temps, allonge le délai de l’actualisation asynchrone par rapport à une actualisation synchrone. Cependant, pour les grands ensembles de données, votre application continue de fonctionner lors de l’actualisation.
Remarque : les implémentations Flex de l’interface IGroupingCollection2 extraient tous les éléments d’un emplacement distant avant de procéder au regroupement.
<mx:HierarchicalCollectionView Properties showRoot="true|false" source="No default" />]]>
Cette propriété n’a aucun effet sur une source qui ne contient pas de nœud racine, par exemple des objets List ou Array.
La méthode
Lorsque la méthode
Remarque : les implémentations Flex de l’interface IGroupingCollection extraient tous les éléments d’un emplacement distant avant de procéder au regroupement.