Flex AdvancedDataGrid – Création de Summary (bilans) avec SummaryRow
Une des fonctionnalités les plus puissantes du composant AdvancedDataGrid est de pouvoir ajouter des lignes dites "Summary rows", qu'on pourrait traduire par lignes bilan. Ces Summary permettent d'extraire des informations de votre donnée et de l'afficher dans votre composant AdvancedDataGrid.
Par exemple, vous pouvez ajouter une ligne Summary qui va contenir la valeur moyenne du champ parmi toutes les éléments de la donnée ou bien le maximum/minimum ou même une valeur personnalisée.
Les Summary ne sont pas supportés que par des données hiérarchiques représentées par la classe HierarchicalData. Vous pouvez seulement créer des Summary pour de la donnée représentée par la classe GroupingCollection.
Vous pouvez créer des Summary sur vos groupes en utilisant la propriété "summaries" de la classe GroupingField. Vous pourrez ensuite afficher ce bilan dans une ligne existante de votre AdvancedDataGrid, ou l'afficher dans une ligne séparée.
L'exemple suivant ajoute deux champs Summary: Min Actual et Max Actual. Les valeurs des champs Min Actual et Max Actual de la première ligne correspondent au bilan de toutes les lignes de ce groupe. Pour les autres (groupes de 2e niveau), ce sont les valeurs minimum et maximum uniquement pour les lignes correspondant au groupe en question.
Voici l'exemple d'utilisation des Summary en MXML:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
include "SimpleFlatData.as"
]]>
</mx:Script>
<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: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>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
Plus d'explications sur SummaryRow et SummaryField
Dans cet exemple, on a utilisé la propriété GroupingField.summaries pour spécifier une instance de SummaryRow. Une instance de SummaryRow contient toutes les informations sur un bilan (Summary). Dans cet exemple, on utilise la propriété "summaryPlacement" pour ajouter le bilan à la donnée groupée. On verra que l'on peut placer ce bilan dans de nouvelles lignes.
Chaque SummaryRow spécifie une ou plusieurs instances de SummaryField pour créer le bilan. Dans cet exemple, on utilise la propriété "dataField" pour spécifier que le bilan est déterminé par les valeurs du champ "Actual". La propriété "label" spécifie le nom du champ qui va être crée pour contenir le bilan. La propriété "operation" spécifie comment créer les bilans pour les champs numériques.
Les valeurs possibles pour la propriété "operation" d'un SummaryField sont:
- SUM
- MIN
- MAX
- AVG
- COUNT
Représentation interne de la donnée
A l'issue de la création de ce bilan, voici comment se présente la donnée de notre GroupingCollection:
[{GroupLabel:"Southwest", Max Actual:55498, Min Actual:29134, children:[
{GroupLabel:"Arizona", Max Actual:38865, Min Actual:29885, children:[
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
{Region:"Southwest", Territory:"Arizona",
Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]}
{GroupLabel:"Central California", Max Actual:29134, Min Actual:29134, children:[
{Region:"Southwest", Territory:"Central California",
Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]}
{GroupLabel:"Nevada", Max Actual:52888, Min Actual:52888, children:[
{Region:"Southwest", Territory:"Nevada",
Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]}
{GroupLabel:"Northern California", Max Actual:55498, Min Actual:38805, children:[
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
{Region:"Southwest", Territory:"Northern California",
Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]}
{GroupLabel:"Southern California", Max Actual:44985, Min Actual:44913, children:[
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
{Region:"Southwest", Territory:"Southern California",
Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}
]}]
Articles similaires
- Flex AdvancedDataGrid – Créer plusieurs SummaryRow (bilans)
- Flex AdvancedDataGrid – Utilisation de GroupingCollection, Grouping et GroupingField
- Flex AdvancedDataGrid – Utiliser le champ GroupLabel pour nommer une colonne créée avec Grouping
- Flex AdvancedDataGrid – Créer des Summary personnalisés avec summaryFunction
- Flex AdvancedDataGrid – Utiliser un dataProvider XML (sous forme XMLList)





