Les objets de type liste permettent l'affichage de données dans notre application. Mais il est souvent utile de vouloir afficher, par exemple, des boutons de suppression, ...
Pour ce faire, nous disposons de l'attribut itemRenderer qui va nous permettre de remplir notre liste avec autre chose que des données (voir également des données mais formatées différement).
Il existe deux types d'itemRenderer.
Tout d'abord un type que nous pouvons qualifier d'inline.
Exemple :
< mx:DataGrid> < mx:columns> < mx:DataGridColumn headerText="Nom" /> < mx:DataGridColumn headerText=""> < mx:itemRenderer> < mx:Component> < mx:Button toolTip="Supprimer" /> < /mx:Component> < /mx:itemRenderer> < /mx:DataGridColumn> < /mx:columns> < /mx:DataGrid>
C'est-à-dire que l'itemRenderer est intégré directement dans la balise colonne (dans notre cas colonne de la dataGrid) en utilisant la balise <mx :Component> qui permet de définir une nouvelle partie dans notre MXML. Cette nouvelle partie est vraiment à part. C'est-à-dire que les éléments définis entre les balises <mx :Component></mx :Component> sont isolé du reste du MXML.
Dans le cas ou nous avons besoin de communiquer avec le MXML conteneur, nous pouvons utiliser la méthode propre à un component, outerDocument. Cette méthode permet de sortir du component et donc de communiquer avec le code du parent. Voici un exemple :
< mx:Script>
< ![CDATA[
private function alert() :void {
mx.controls.Alert.show('appel du component') ;
}
]]>
< /mx:Script>
< mx:DataGrid>
< mx:columns>
< mx:DataGridColumn headerText="Nom" />
< mx:DataGridColumn headerText="">
< mx:itemRenderer>
< mx:Component>
< mx:Button toolTip="Supprimer" click="{outerDocument.alert()}" />
< /mx:Component>
< /mx:itemRenderer>
< /mx:DataGridColumn>
< /mx:columns>
< /mx:DataGrid>
< mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center">
< mx:CheckBox id="editor" selected="{data.isSelected}" />
< /mx:VBox>
< mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center">
< mx:Script>
< ![CDATA[
import flash.events.Event;
private function onClickCheckbox():void {
dispatchEvent(new Event('click', true,true ));
}
]]>
< /mx:Script>
< mx:CheckBox id="editor" selected="{data.isSelected}" click="{onClickCheckbox()}"/>
< /mx:VBox>
< mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initHandler()">
< ![CDATA[
import flash.events.Event;
private function initHandler():void {
DG.addEventListener(CustomEvent.CLICKED, alert);
}
private function alert(evt:Event) :void {
mx.controls.Alert.show('appel du component') ;
}
]]>
< mx:DataGrid id="DG">
< mx:columns>
< mx:DataGridColumn headerText="Nom" />
< mx:DataGridColumn headerText="" itemRenderer="CheckboxRenderer" />
< /mx:columns>
< /mx:DataGrid>package {
import flash.events.Event;
public class CustomEvent extends Event {
public static const CLICKED:String = "button clicked";
public var data : * ;
public function Events(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
}
}
}var evt : CustomEvent = new CustomEvent(CustomEvent.CLICKED, true, true); evt.data = data; dispatchEvent(evt);

Tweet This!
Write a comment
Posts: 2
Reply #2 on : Thu August 25, 2011, 15:57:43
Posts: 2
Reply #1 on : Mon November 29, 2010, 14:26:12