Flex 弹出窗口的数据传输

这里通过一个实例演示Flex父窗口和弹出的子窗口之间的数据传输。

先创建一个MXML component 命名为ListTitleWindow.mxml (Based on : TitleWindow)

xml 代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="300"  
  3.     creationComplete="initComponent()"  
  4.       showCloseButton="true"  
  5.       close="closeWindow()">  
  6.        
  7.     <mx:Script>  
  8.   
  9.         <CDATA  
  10.             
  11.         /* 数据xml格式如下:   
  12.             <items>  
  13.                 <item label="Tom" data="num001"/>  
  14.                 <item label="Lucy" data="num002"/>  
  15.             </items>    
  16.         */   
  17.            
  18.          import mx.managers.PopUpManager;   
  19.          import mx.rpc.events.ResultEvent;   
  20.          import mx.controls.Alert;   
  21.             
  22.          [Bindable]public var mainApp:Object = null;     
  23.          [Bindable]public var headTitle:String;           
  24.          [Bindable]public var url:String;   
  25.          [Bindable]public var selectedItem:Object;   
  26.          [Bindable]public var callbackFunction:Function;  //回调函数   
  27.             
  28.          private function initComponent():void {   
  29.             //listDataService.url = url;   
  30.             listDataService.send();   
  31.          }   
  32.             
  33.         //closeWindow   
  34.          private function closeWindow():void {   
  35.                PopUpManager.removePopUp(this);   
  36.          }   
  37.             
  38.          private function submit():void {   
  39.              PopUpManager.removePopUp(this);   
  40.              if (selectedItem != null && callbackFunction != null) {   
  41.                  //调用父窗体的方法并以参数形式返回选择结果   
  42.                  callbackFunction.call(mainApp, selectedItem.data);    
  43.              }   
  44.          }   
  45.             
  46.          private function mySelection(oEvent:Event):void {   
  47.              selectedItem = oEvent.target.selectedItem;   
  48.          }      
  49.            
  50.         private function initListData(event:ResultEvent):void {   
  51.             //使用HTTPService返回的xml数据,初始化List数据   
  52.             dataList.dataProvider = event.result.items.item;   
  53.         }   
  54.   
  55.         >  
  56.     </mx:Script>  
  57.   
  58.     <mx:HTTPService id="listDataService" url="{url}" showBusyCursor="true"  result="initListData(event)" />  
  59.   
  60.     <mx:Label text="{headTitle}"/>  
  61.        
  62.     <mx:List id="dataList" width="100%" color="blue" change="mySelection(event)" />  
  63.   
  64.     <mx:VBox width="100%">  
  65.         <mx:Label text="Selected State: {selectedItem.label}"/>  
  66.         <mx:Button label="OK" click="submit();"/>  
  67.     </mx:VBox>  
  68.        
  69. </mx:TitleWindow>  

使用一个MXML application 作为父窗体,代码如下

xml 代码
  1. <!---->xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  
  3.     initialize="initApp()">  
  4.     <mx:Style source="styles/main.css"/>  
  5.                    
  6.     <mx:Script>  
  7.     <!----> 
  8.     import mx.controls.Alert;  
  9.     import flash.display.StageDisplayState;  
  10.     import components.window.ListTitleWindow;  
  11.     import mx.containers.TitleWindow;  
  12.     import mx.managers.PopUpManager;  
  13.     import mx.collections.ArrayCollection;  
  14.    
  15.     private function initApp() : void {  
  16.  
  17.     }  
  18.  
  19.     private function showTitleWindow():void {  
  20.         var titleWindowInstance:ListTitleWindow =   
  21.             ListTitleWindow(PopUpManager.createPopUp(this, ListTitleWindow, false));  
  22.           
  23.         titleWindowInstance.title = "Welcome";  
  24.         titleWindowInstance.width = 400;   
  25.         titleWindowInstance.height = 300;     
  26.         titleWindowInstance.mainApp = this;    
  27.         titleWindowInstance.headTitle = "Select a item.";   
  28.         titleWindowInstance.url="http://localhost:8080/test.xml";  
  29.         titleWindowInstance.callbackFunction = this.myFunction;  
  30.           
  31.         PopUpManager.centerPopUp(titleWindowInstance);  
  32.      }  
  33.            
  34.     public function myFunction(bb:String):void {  
  35.         Alert.show(bb);  
  36.     }  
  37.  
  38.     ]]>  
  39.   
  40.     mx:Script>  
  41.        
  42.     <mx:Button x="63" y="96" label="Button" click="showTitleWindow();"/>  
  43.        
  44. mx:Application>  

这里使用HTTPService来获取初始化List的数据,也可以在父窗体中直接给子窗体的List赋值.

参考:

http://www.cflex.net/showfiledetails.cfm?ChannelID=1&Object=File&objectID=558

http://blog.csdn.net/jingqiu5/archive/2006/12/04/1429570.aspx

你可能感兴趣的:(xml,css,Flex,Flash,Adobe)