Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

29juin/093

Flex Chart – Utiliser un Array d'Object comme dataProvider (MXML)

On a vu dans l'article précédent qu'on pouvait déclarer un Array d'Object comme dataProvider d'un Chart en ActionScript. Vous vous en doutez, on peut aussi le faire en MXML de manière un peu plus lourde:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
	<mx:Array id="expenses">
		<mx:Object
			Month="January"
			Profit="2000"
			Expenses="1500"
			Amount="450"
		/>
		<mx:Object
			Month="February"
			Profit="1000"
			Expenses="200"
			Amount="600"
		/>
		<mx:Object
			Month="March"
			Profit="1500"
			Expenses="500"
			Amount="300"
		/>
		<mx:Object
			Month="April"
			Profit="500"
			Expenses="300"
			Amount="500"
		/>
		<mx:Object
			Month="May"
			Profit="1000"
			Expenses="450"
			Amount="250"
		/>
		<mx:Object
			Month="June"
			Profit="2000"
			Expenses="500"
			Amount="700"
		/>
	</mx:Array>
	<mx:Panel title="Column Chart">
		<mx:ColumnChart id="myChart" dataProvider="{expenses}" showDataTips="true">
			<mx:horizontalAxis>
				<mx:CategoryAxis
				dataProvider="{expenses}"
				categoryField="Month"
				/>
			</mx:horizontalAxis>
			<mx:series>
				<mx:ColumnSeries
				xField="Month"
				yField="Profit"
				displayName="Profit"
				/>
				<mx:ColumnSeries
				xField="Month"
				yField="Expenses"
				displayName="Expenses"
				/>
			</mx:series>
		</mx:ColumnChart>
		<mx:Legend dataProvider="{myChart}"/>
	</mx:Panel>
</mx:Application>

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

Articles similaires

Commentaires (3) Trackbacks (1)
  1. Cela ne marche plus avec les composants spark... Pourquoi est une grande question.

  2. Bonjour,
    Le fait d'utiliser Spark n'est pas gênant car les composants viennent toujours de Flex 3 (mx). Juste une ou deux adaptations propres à Flex 4 et cela fonctionne:

    MXML:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    3.                xmlns:s="library://ns.adobe.com/flex/spark"
    4.                xmlns:mx="library://ns.adobe.com/flex/mx">
    5.   <fx:Declarations>
    6.    
    7.  
    8.   <fx:Array id="expenses">
    9.     <fx:Object
    10.       Month="January"
    11.       Profit="2000"
    12.       Expenses="1500"
    13.       Amount="450"
    14.       />
    15.     <fx:Object
    16.       Month="February"
    17.       Profit="1000"
    18.       Expenses="200"
    19.       Amount="600"
    20.       />
    21.     <fx:Object
    22.       Month="March"
    23.       Profit="1500"
    24.       Expenses="500"
    25.       Amount="300"
    26.       />
    27.     <fx:Object
    28.       Month="April"
    29.       Profit="500"
    30.       Expenses="300"
    31.       Amount="500"
    32.       />
    33.     <fx:Object
    34.       Month="May"
    35.       Profit="1000"
    36.       Expenses="450"
    37.       Amount="250"
    38.       />
    39.     <fx:Object
    40.       Month="June"
    41.       Profit="2000"
    42.       Expenses="500"
    43.       Amount="700"
    44.       />
    45.   </fx:Array>
    46.   </fx:Declarations>
    47.   <mx:Panel title="Column Chart">
    48.     <mx:ColumnChart id="myChart" dataProvider="{expenses}" showDataTips="true">
    49.       <mx:horizontalAxis>
    50.         <mx:CategoryAxis
    51.           dataProvider="{expenses}"
    52.           categoryField="Month"
    53.           />
    54.       </mx:horizontalAxis>
    55.       <mx:series>
    56.         <mx:ColumnSeries
    57.           xField="Month"
    58.           yField="Profit"
    59.           displayName="Profit"
    60.           />
    61.         <mx:ColumnSeries
    62.           xField="Month"
    63.           yField="Expenses"
    64.           displayName="Expenses"
    65.           />
    66.       </mx:series>
    67.     </mx:ColumnChart>
    68.     <mx:Legend dataProvider="{myChart}"/>
    69.   </mx:Panel>
    70. </s:Application>

    Fabien

  3. oui ici ça marche parce que c'est un composant mx qui est utilisé. Avec les composant spark ce n'est plus possible

    For Spark list-based controls, the value of the dataProvider property must implement the IList interface. Classes that implement IList include ArrayCollection, ArrayList, and XMLListCollection.

    source http://www.adobe.com/devnet/flex/quickstarts/using_data_providers.html

    D'un autre côté cela lève l'ambiguïté causé par l'utilisation d'un array qui est en réalité transformé en collection par les objets mx ce qui limite l'utilisation d'un Array en dataprovider aux données statiques.


Leave a comment

(required)