2011-01-21 5 views
2

Guys Я вид сетки в флекс,Flex DataGrid компонент проблемы

один из столбцов оказывается так:

<mx:DataGridColumn headerText="Cancel" > 
     <mx:itemRenderer> 
     <fx:Component> 
     <mx:Box width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"> 
     <mx:Button label="Download" width="100%" > 
      <mx:click>someFunction();</mx:click> 
     </mx:Button> 
     </mx:Box> 
     </fx:Component> 
     </mx:itemRenderer> 
     </mx:DataGridColumn> 

теперь я проблема, что функция кнопки клик не признается. Он говорит «вызов возможно неопределенной функции», хотя он был определен. Что не так с этим? Как сделать кнопку в сетке вызовом функции в том же файле mxml?

благодаря

ответ

4

Ваш itemRenderer считается его собственной инкапсулированный компонент, так что ищет someFunction() внутри самого itemRenderer. Чтобы вызвать функцию, которую вы определили в файле mxml, который содержит ваш DataGrid, попробуйте вызвать функцию, используя outerDocument.someFunction();.

Если вы хотите, чтобы определить функцию на уровне ItemRenderer, вы могли бы сделать что-то вроде этого:

<mx:itemRenderer> 
    <fx:Component> 
    <mx:VBox> 
     <fx:Script> 
     <![CDATA[ 

     public function someFunction():void 
     { 
      // Do Something 
     } 

     ]]> 
     </fx:Script> 

     <mx:Button click="someFunction();"/> 
    </mx:VBox> 
    </fx:Component> 
</mx:itemRenderer> 
+0

Ухоженная, очень приятно. ты спас мой день. – Rose

+0

Большое вам спасибо за это! Спас мой день тоже. Покачаю головой в Adobe, хотя ... Что за черт !? Почему IDE не может сказать вам об этом, если это распространенная ошибка? – blong