如何使用Datagrid itemRenderer中的图像单击动态移动状态?

时间:2009-09-07 12:28:10

标签: flex actionscript air flash

我在datagrid项目渲染器中使用了播放按钮图像,如果我单击图像然后移动到另一个状态(通过使用currentState ='play')。所以我尝试了:

<mx:DataGridColumn  textAlign="center"  headerText="" dataField="col2">
 <mx:itemRenderer>
  <mx:Component>
  <mx:HBox  textAlign="center"  paddingLeft="17">
         <mx:Image   source="@Embed(source='image/play_button.png')" click="currentState='Playsystem'"/>
    </mx:HBox>
  </mx:Component>
 </mx:itemRenderer>

但它显示错误,如未定义状态'Playsystem'。但我已经有了州。我错了什么?为什么错误显示这样?

1 个答案:

答案 0 :(得分:0)

您收到此错误,因为currentState不是Component的已定义属性。

您需要将click="currentState='Playsystem'"更改为click="this.parent.parent.parent['currentState'] = 'Playsystem'"

如:

<mx:DataGrid bottom="0" top="37" left="0" dataProvider="{dataAry}" width="340">
<mx:columns>
<mx:DataGridColumn  textAlign="center"  headerText="" dataField="col2">
 <mx:itemRenderer>
  <mx:Component>
  <mx:HBox  textAlign="center"  paddingLeft="17">
         <mx:Image   source="@Embed(source='125x125.gif')" click="this.parent.parent.parent['currentState'] = 'Playsystem'"/>
    </mx:HBox>
  </mx:Component>
 </mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>

但我不这样做。这有点像黑客。我建议实际为组件编写一个类,让它监听并将click事件发送到容器。 More info