,你可以通过它访问它的主人属性:
(this.owner as DataGrid).selectedIndex
简单的itemRenderer其调度自定义事件:
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
override public function prepare(hasBeenRecycled:Boolean):void {
lblData.text = data[column.dataField]
}
protected function onClickButton(ev:MouseEvent):void {
trace("ButtonDispatchItemRenderer::onClickButton");
//dispatch the Event which has a static const GET_SELECTED_INDEX for the event type
this.owner.dispatchEvent(new MyEvent(MyEvent.GET_SELECTED_INDEX));
}
]]>
</fx:Script>
<s:HGroup verticalAlign="baseline">
<s:Label id="lblData" top="9" left="7"/>
<s:Button label="dispatch" click="onClickButton(event)"/>
</s:HGroup>
</s:GridItemRenderer>
有一个DataGrid听事件
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600" creationComplete="onCreationComplete()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import spark.components.gridClasses.GridColumn;
[Bindable]
public static var initDG:ArrayCollection = new ArrayCollection([
{label:"firstItem"}, {label:"secondItem"}, {label:"thirdItem"}
]);
protected function onCreationComplete():void {
dataGrid.addEventListener(MyEvent.GET_SELECTED_INDEX, onRendererButtonClick, false, 0, true);
}
protected function onRendererButtonClick(ev:MyEvent):void {
trace("Application::RenderButtonClick");
}
]]>
</fx:Script>
<s:VGroup>
<s:DataGrid id="dataGrid" verticalCenter="0" horizontalCenter="0" dataProvider="{initDG}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="label" itemRenderer="renderers.ButtonDispatchItemRenderer"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:VGroup>
</mx:Application>
简单的应用程序
你必须添加一个属性到你拥有selectedIndex的事件。您必须将值传递给渲染器中的事件(例如构造函数中的第二个参数)此示例只是分派事件
您可以发布示例吗? – Apalabrados 2013-05-10 15:28:27
我没有时间做一个深入的例子。首先阅读有关事件的Flex文档:http://help.adobe.com/zh_CN/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ee9.html并尝试使其工作,然后返回一个特定问题。 – JeffryHouser 2013-05-10 16:38:22