Flex 中父窗口和子窗口的数据交换的实现如下. 1 在Flex2中弹出式窗口的API如下 Package : mx.managers Class : PopUpManager Methods : addPopUp(window:IFlexDisplayObject, parent:DisplayObject, modal:Boolean = false, childList:String = null):void 参数解释: window : 要弹出的对象,这对象必须实现了IFlexDisplayObject接口,比如TitleWindow. parent : 子窗口的父窗口对象. modal : 模式弹出(true)还是非模式弹出(false). childList : 弹出式对象在那个对象下弹出. PopUpManagerChildList.APPLICATION PopUpManagerChildList.POPUP PopUpManagerChildList.PARENT (默认).
2 实例
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
- <mx:Script>
- <![CDATA[
- import mx.events.ListEvent;
- import com.demo.PersonVO;
- import mx.events.ItemClickEvent;
- import mx.collections.ArrayCollection;
- import mx.managers.PopUpManager;
- [Bindable]
- private var testDataSource : ArrayCollection = new ArrayCollection(
- [ {id : 1 ,name :"zhangsan",language : "java"},
- {id : 2 ,name :"lisi",language : "c++"},
- {id : 3 ,name :"qianwu",language : "vb"},
- {id : 4 ,name :"xiaohong",language : "pb"},
- {id : 5 ,name :"xiaoming",language : "perl"},
- ])
- private function showDetailPersonInfo(event : ListEvent) : void
- {
- var personVO : PersonVO =new PersonVO();
- personVO.id = event.currentTarget.selectedItem.id
- personVO.name = event.currentTarget.selectedItem.name;
- personVO.language = event.currentTarget.selectedItem.language;
- //hard code the detail person information
- personVO.email = "test12638@163.com"
- personVO.married = false;
- personVO.workYears = "3 years"
- var personPopUpWindow : PersonInfomationPopWindow = new PersonInfomationPopWindow();
- personPopUpWindow.personVO = personVO;
- PopUpManager.addPopUp(personPopUpWindow,this,true);
- PopUpManager.centerPopUp(personPopUpWindow);
- }
- ]]>
- </mx:Script>
- <mx:DataGrid dataProvider="{testDataSource}" width="100%" height="100%" itemClick="showDetailPersonInfo(event)">
- <mx:columns>
- <mx:DataGridColumn dataField="id" headerText="编号" />
- <mx:DataGridColumn dataField="name" headerText="名字" />
- <mx:DataGridColumn dataField="language" headerText="开发语言" />
- </mx:columns>
- </mx:DataGrid>
- </mx:Application>
- ------------------------------
- <?xml version="1.0" encoding="utf-8"?>
- <mx:TitleWindow
- xmlns:mx="http://www.adobe.com/2006/mxml"
- width="400"
- height="300"
- showCloseButton="true"
- close="PopUpManager.removePopUp(this)">
- <mx:VBox width="400" height="200" paddingTop="10" >
- <mx:HBox width="100%" paddingLeft="10">
- <mx:Label width="40%" text="id:"/>
- <mx:Label text="{personVO.id}"/>
- </mx:HBox>
- <mx:HBox width="100%" paddingLeft="10">
- <mx:Label width="40%" text="name:"/>
- <mx:Label text="{personVO.name}"/>
- </mx:HBox>
- <mx:HBox width="100%" paddingLeft="10">
- <mx:Label width="40%" text="language:"/>
- <mx:Label text="{personVO.language}"/>
- </mx:HBox>
- <mx:HBox width="100%" paddingLeft="10">
- <mx:Label width="40%" text="workYears:"/>
- <mx:Label text="{personVO.workYears}"/>
- </mx:HBox>
- <mx:HBox width="100%" paddingLeft="10">
- <mx:Label width="40%" text="married:"/>
- <mx:Label text="{personVO.married}"/>
- </mx:HBox>
- </mx:VBox>
- <mx:Script>
- <![CDATA[
- import mx.managers.PopUpManager;
- import com.demo.PersonVO;
- [Bindable]
- public var personVO : PersonVO = null;]]>
- </mx:Script>
- </mx:TitleWindow>
- -------------------------------------------
- package com.demo
- {
- [Bindable]
- public class PersonVO
- {
- public var id : String = "";
- public var name : String = "";
- public var language : String = "";
- public var email : String = "";
- public var workYears : String = "";
- public var married : Boolean = false;
- }
- }
from: