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 实例
[code]
<?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;
}
}
[/code]
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 实例
[code]
<?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;
}
}
[/code]