2010-05-02 7 views
0

J'ai une grille de données avec un itemrenderer d'étiquette personnalisée (en gros cela fait ressembler l'étiquette à un hyperlien html traditionnel).Adobe Flex Datagrid: addEventListener MouseEvent.CLICK

<mx:DataGridColumn id="itemId"> 
    <mx:itemRenderer> 
    <mx:Component> 
     <controls3:HyperlinkLabel text="{data.doc}" /> 
    </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 

Ce qui précède fonctionne parfaitement.

Je voudrais essayer d'ajouter un écouteur d'événement à cet itemrenderer, mais je ne suis pas sûr de savoir comment le faire étant donné que je ne peux pas spécifier un identifiant pour l'itemrendered lui-même.

J'ai essayé ce qui suit, mais il ne semble pas travailler:

itemId.addEventListener(MouseEvent.CLICK, onItemSelect); 

Répondre

1

Vous n'avez pas besoin d'un ID. Il suffit de le faire en utilisant event.currentTarget

<mx:DataGridColumn id="itemId"> 
    <mx:itemRenderer> 
    <mx:Component> 
     <controls3:HyperlinkLabel text="{data.doc}" click="onItemSelect(event)" /> 
    </mx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 

Et puis ... dans votre balise Script ...

private function onItemSelect(event:MouseEvent) : void { 
// do something with event.currentTarget 
} 
+0

Je ne pense pas que cela est possible. Tout d'abord, je comprends que si je voulais utiliser cette méthode, ce serait externalDocument.onItemSelect (événement) Mais je voulais vraiment essayer un eventlistener si possible, puisque mon code est tout dans un médiateur. – JonoB

+0

Ensuite, je dois vous demander pourquoi vous mettez un balisage de présentation dans un médiateur? – Robusto

+0

Je ne suis pas sûr de comprendre votre question, mais pour l'instant j'ai utilisé la méthode outerDocument.onItemSelect (event). Ça casse l'encapsulation, mais bon, tu dois faire ce que tu dois faire. Merci pour l'aide. – JonoB