`
yexin218
  • 浏览: 975774 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Flex--主程序与弹出窗口之间传递数据

    博客分类:
  • Flex
阅读更多

主程序:TitleWindowDataTest.mxml

<?xml version="1.0" encoding="utf-8"?>
<!-- TitleWindowDataTest.mxml
  An application that uses custom pop-up TitleWindowData-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="left" layout="vertical"
  initialize="initApp()">
<mx:Script><![CDATA[
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
import mx.collections.ArrayCollection;
[Bindable]public var gsBindMe:String = "Change me!" ;     
[Bindable]private var acDP2:ArrayCollection;
[Bindable]public var acItemsSelected:ArrayCollection;      //set by itemClick
private function initApp():void
{
  acDP2 = new ArrayCollection();
  acDP2.addItem({artist:"Pink Floyd",price:29.99,album:"Meddle"});
  acDP2.addItem({artist:"Pink Floyd",price:29.99,album:"More"});
  acDP2.addItem({artist:"Genesis",price:22.99,album:"Trespass"});
  acDP2.addItem({artist:"Yes",price:22.99,album:"Close to the Edge"});
  acDP2.addItem({artist:"King Crimson",price:21.99,album:"Wake of Posiedon"});
}//
private function showTitleWindow():void
{
  var titleWindowInstance:TitleWindowData =
        TitleWindowData(PopUpManager.createPopUp(this,
                 TitleWindowData,
                 false));     //instantiate and show the title window
  PopUpManager.centerPopUp(titleWindowInstance);
  titleWindowInstance.title = "Non-Modal Title Window Data";//built-in property
  titleWindowInstance.width = 400;                 //built-in property
  titleWindowInstance.height = 450;                 //built-in property  
  titleWindowInstance.mainApp = this;                      //Reference to the main app scope
  titleWindowInstance.gnMyNumber = parseFloat(tiMyNumber.text);  //Pass a simple value to the popup
}
private function showSelectedItems(event:Event):void
{
   acItemsSelected = new ArrayCollection(dg2.selectedItems)
}
]]></mx:Script>
  <mx:Label text="Main App" fontSize="18" />
<mx:Text text="Selected Items will be passed into the pop-up. Select an item and click 'Show Title Window' button"  width="300"/>
<mx:DataGrid id="dg2" allowMultipleSelection="true" itemClick="showSelectedItems(event)"
   dataProvider="{acDP2}" >
  <mx:columns>
   <mx:Array>
    <mx:DataGridColumn headerText="Artist" dataField="artist" />
    <mx:DataGridColumn headerText="Price" dataField="price" editable="true"/>
    <mx:DataGridColumn headerText="Album" dataField="album" />
   </mx:Array>
  </mx:columns>    
</mx:DataGrid>
<mx:HBox >
  <mx:Label text="MyNumber:"  width="100"/>
  <mx:TextInput id="tiMyNumber"  text="99"/>
</mx:HBox>
<mx:HBox >
  <mx:Label text="Bind Me"  width="100"/>
  <mx:TextInput id="tiBindMe" text="{gsBindMe}"
   change="gsBindMe = tiBindMe.text"/>
</mx:HBox>
<mx:Button label="Show Title Window (Non-Modal)" click="showTitleWindow()"/>
<mx:HBox >
  <mx:Text text="Final Selection: From item selected in pop-up"  width="100"/>
  <mx:TextInput id="tiFinalSelection"/>
</mx:HBox>  
</mx:Application> 

 自定义组件:TitleWindowData.mxml

<?xml version="1.0" encoding="utf-8"?>
<!-- TitleWindowData.mxml
  A sample custom pop-up that extends TitleWindow-->
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
  creationComplete="initComponent()"
  showCloseButton="true"
  close="closeWindow()">
<mx:Script><![CDATA[
  import mx.managers.PopUpManager;
  import mx.collections.ArrayCollection;
[Bindable]public var mainApp:TitleWindowDataTest = null;  
[Bindable]public var gsMyString:String;      
[Bindable]public var gnMyNumber:Number;      
[Bindable]public var acItemsSelected:ArrayCollection;
private function initComponent():void
{
}
private function closeWindow():void
{
   PopUpManager.removePopUp(this);
}//closeWindow
private function showFinalSelection(oEvent:Event):void
{
   mainApp.tiFinalSelection.text = oEvent.target.selectedItem.album;
}//showFinalSelection
]]></mx:Script>
<mx:Text text="The data grid below shows the selectedItems in the data grid in the Main app. This dataProvider is bound to a local variable which is set by Main App datagrid itemClick. Select additional items(ctrl-click) in Main App, they will display here. Select an item here. It will display in Main App 'Final Selection' control." width="300" />
<mx:DataGrid id="dg2" rowCount="3"
   dataProvider="{mainApp.acItemsSelected}"
   change="showFinalSelection(event)" >
  <mx:columns>
   <mx:Array>
    <mx:DataGridColumn headerText="Artist" dataField="artist" />
    <mx:DataGridColumn headerText="Price" dataField="price" editable="true"/>
    <mx:DataGridColumn headerText="Album" dataField="album" />
   </mx:Array>
  </mx:columns>    
</mx:DataGrid>
<mx:HBox >
  <mx:Label id="lblMyNumber" text="{gnMyNumber}"  width="100"/>
  <mx:Text text="Bound to local variable set at pop-up. Changes to Main App control do NOT change this" width="200" />
</mx:HBox>
<mx:HBox >
  <mx:Label text="{mainApp.gsBindMe}"  width="100"/>
  <mx:Text text="Bound to mainApp local variable via passed in reference. Changes in Main App DO change this." width="200"  />
</mx:HBox>  
</mx:TitleWindow> 

 效果如下:

http://www.box.net/shared/cbb3pqbrmx

 

Original paper:http://benben.iteye.com/blog/278275

 

分享到:
评论

相关推荐

    Flex 弹出窗口的数据传输

    标题中的“Flex 弹出窗口的数据传输”指的是在Adobe Flex应用程序中如何实现在弹出窗口(通常是PopUpWindow或ModalDialog)与主应用程序之间进行数据交互。Flex是一种用于构建富互联网应用程序(RIA)的开放源代码...

    Flex弹出窗口请求Action函数示例

    在开发过程中,开发者还需要处理弹出窗口与主窗口之间的交互逻辑,包括但不限于数据的传递、事件监听、状态同步等。此外,还要注意用户界面的友好性,如合理利用屏幕空间、提供清晰的用户指引、保证界面元素的可访问...

    Flex打开新窗口将主窗口数据传给子窗口然后返回

    在本例中,作者描述了他在实现打开新窗口并将数据从主窗口传递给子窗口,然后子窗口关闭并返回主窗口的需求过程中遇到的问题和解决方案。他的初始实现方法是打开子窗口后,立即隐藏主窗口,但是这种方法在返回主窗口...

    FLEX TitleWindow之间数据传输的示例

    需要注意的是,以上示例代码的目的是为了说明Flex中Application与TitleWindow之间数据传递的基本方法。在实际的应用开发中,可能会涉及到更复杂的逻辑,例如需要处理异步数据交互、事件监听以及数据更新同步等问题。...

    Flex父子窗口相互调用实现思路及

    在父窗口的代码中,我们注意到使用了`PopUpManager`类,这是一个用于管理弹出窗口的类,它提供了添加、移除、定位弹出窗口的方法。此外,`ArrayCollection`用于数据绑定,`DataGrid`用于展示数据,而`DataGridColumn...

Global site tag (gtag.js) - Google Analytics