好的,你们 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>