2010-05-02 3 views
0

У меня есть datagrid с пользовательским ярлыком itemrenderer (в основном это делает ярлык похожим на традиционную гиперссылку html).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> 

Выше работает отлично.

Я хотел бы попробовать добавить слушателя событий к этому itemrenderer, но я не уверен, как это сделать, учитывая, что я не могу указать идентификатор для самого элемента.

Я попытался следующие, но это не похоже на работу:

itemId.addEventListener(MouseEvent.CLICK, onItemSelect); 

ответ

1

Вам не нужно удостоверение личности. Просто сделайте это с помощью event.currentTarget

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

А потом ... в вашем теге Script ...

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

Я не думаю, что это возможно. Во-первых, я понимаю, что если бы я хотел использовать этот метод, это было бы externalDocument.onItemSelect (event) Но я действительно хотел попробовать использовать eventlistener, если это вообще возможно, так как мой код все в медиаторе. – JonoB

+0

Тогда я должен спросить, почему вы размещаете презентационную разметку в медиаторе? – Robusto

+0

Я не уверен, что понимаю ваш вопрос, но на данный момент я пошел с использованием метода externalDocument.onItemSelect (event). Его разрывает инкапсуляцию, но эй, ты должен делать то, что должен делать. Спасибо за помощь. – JonoB

Смежные вопросы