【发布时间】:2014-01-19 08:17:52
【问题描述】:
好的,Flex 专家,我需要一些帮助。我的主应用程序中有一个带有 itemrenderer (mxml) 的数据网格。当您按下 ir 中的图像时,将打开一个自定义组件 (mxml)。 cc 有一个按钮,它应该调用主应用程序中的一个函数,该函数更新arraycollection(dataprovider)并因此更新datagrid。我尝试了几种 parentDocument、outerDocument 和自定义事件的变体,但我无法通过按钮使该功能起作用。我认为这是 b/c 我将 cc 嵌套在 ir 中。我直接从他们的作品中调用的任何内容。
有没有人有任何建议或者更好的工作示例我可以看看?
这是我尝试过的:
//在主应用程序中
public function creationComplete_handler(event:FlexEvent):void{
dgList.addEventListener("ceRD", fnt_ceRD);
}
public function fnt_ceRD():void {
Alert.show("called");
}
<mx:AdvancedDataGrid id="dgList" dataProvider="{acLists}" designViewDataType="flat">
<mx:columns>
<mx:AdvancedDataGridColumn headerText="Roster" sortable="false" itemRenderer="c_CO.AppLocal.ListManager.iRenderers.irADVStudents" /> </mx:columns>
</mx:AdvancedDataGrid>
在 itemrenderer 中,使用了 popupmanager,这样我就可以将中心放在应用程序的顶部,而不是 datagrid 中的按钮
public function btnRoster(event:MouseEvent):void{
var rShow:rosterDetails = new rosterDetails();
PopUpManager.addPopUp(rShow, FlexGlobals.topLevelApplication.mainContent, true);
PopUpManager.centerPopUp(rShow);
}
在自定义组件中:
<fx:Metadata>
[Event("ceRD", true, false)]
</fx:Metadata>
<fx:Script>
<![CDATA[
import flash.events.Event;
protected function btnSave(event:MouseEvent):void {
var i_ceRD:Event = new Event("ceRD");
dispatchEvent(i_ceRD);
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
【问题讨论】:
-
请告诉我们您尝试了什么?在大多数情况下,我建议在渲染器中使用自定义事件 [确保气泡属性设置为 true];然后在 DataGrid 上为事件添加一个侦听器[您可以在 DataGrid 的初始化事件中这样做]
标签: apache-flex itemrenderer custom-events