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

1、设计思路

(1)子窗口调用父窗口的方法

(2)子窗口做了修改后,返回父窗口,父窗口调用子窗口函数

2、设计源码

(1)父窗口

ParentWindow.mxml:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>

<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.managers.PopUpManager;

[Bindable]
//表格数据源绑定
private var grid:ArrayCollection = new ArrayCollection([
{number:"2014010101",name:"张散",sex:"男",age:"23"},
{number:"2014010102",name:"李思",sex:"女",age:"22"},
{number:"2014010101",name:"吴王",sex:"男",age:"21"},
{number:"2014010101",name:"赵柳",sex:"女",age:"20"},
{number:"2014010101",name:"游华",sex:"男",age:"22"},
{number:"2014010101",name:"祝思",sex:"女",age:"18"},
{number:"2014010101",name:"周礼",sex:"男",age:"19"},
{number:"2014010101",name:"华捷",sex:"女",age:"20"},
{number:"2014010101",name:"刘亮",sex:"男",age:"22"},
{number:"2014010101",name:"沈雪",sex:"女",age:"21"}
]);

/*修改事件函数*/
protected function updateHandler(event:MouseEvent):void
{
//新建子窗体对象
var childWindow:ChildWindow = new ChildWindow();
//将子窗体添加到PopUpManager中
PopUpManager.addPopUp(childWindow,this,true);
//向子窗体传递参数
childWindow.age = "23";
//子窗口调用父窗口函数
childWindow.callBack = this.myFunction;
//子窗体居中弹出
PopUpManager.centerPopUp(childWindow);
}

/*刷新函数*/
public function myFunction(you:String):void
{
Alert.show(you+"Hello");
}

]]>
</fx:Script>
<mx:VBox width="100%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10">
<mx:DataGrid id="dataGrid" dataProvider="{grid}" rowCount="{grid.length + 1}" width="100%"
verticalAlign="middle" textAlign="center">
<mx:columns>
<mx:DataGridColumn headerText="学号" dataField="number"/>
<mx:DataGridColumn headerText="姓名" dataField="name"/>
<mx:DataGridColumn headerText="性别" dataField="sex"/>
<mx:DataGridColumn headerText="年龄" dataField="age"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="100%" horizontalAlign="center" verticalAlign="middle">
<s:Button label="修改" click="updateHandler(event)"/>
</mx:HBox>
</mx:VBox>
</s:Application>

(2)子窗口

ChildWindow.mxml:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="300" height="220"
close="closeHandler(event)" title="修改窗口">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.managers.PopUpManager;

//回调函数
public var callBack:Function;

public var age:String = "";

/*关闭事件函数*/
protected function closeHandler(event:CloseEvent):void
{
PopUpManager.removePopUp(this);
}

/*修改按钮事件函数*/
protected function updateHandler(event:MouseEvent):void
{
stuAge.text = age;
}

/*取消按钮事件函数*/
protected function cancelHandler(event:MouseEvent):void
{
number.text = "";
stuName.text = "";
PopUpManager.removePopUp(this);
if(isPopUp)
{
callBack.call(parent);
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>

<mx:VBox width="100%" height="100%">
<mx:Form>
<mx:FormItem label="学号:">
<s:TextInput id="number" width="200" maxChars="10"/>
</mx:FormItem>
<mx:FormItem label="姓名:">
<s:TextInput id="stuName" width="200" maxChars="10"/>
</mx:FormItem>
<mx:FormItem label="性别:">
<mx:HBox width="100%">
<mx:RadioButtonGroup id="sex"/>
<s:RadioButton groupName="sex" label="男" selected="true"/>
<s:RadioButton groupName="sex" label="女"/>
</mx:HBox>
</mx:FormItem>
<mx:FormItem label="年龄:">
<s:TextInput id="stuAge" width="200" maxChars="2"/>
</mx:FormItem>
<mx:FormItem>
<mx:HBox width="100%">
<s:Button label="修改" click="updateHandler(event)"/>
<s:Label width="42"/>
<s:Button label="取消" click="cancelHandler(event)"/>
</mx:HBox>
</mx:FormItem>
</mx:Form>
</mx:VBox>
</s:TitleWindow>

3、设计结果

(1)初始化时
 
(2)单击修改按钮

时间: 2024-09-30 23:44:33

Flex父子窗口相互调用实现思路及源码_Flex的相关文章

浅谈PHP调用Webservice思路及源码分享_php实例

方法一:直接调用 复制代码 代码如下: <?  /******************************************************************************/ /*  文件名 : soapclient.php /*  说  明 : WebService接口客户端例程 /******************************************************************************/ include('N

iframe父子页面相互调用js代码

当父页面和子页面都属于同一个域下,那么它们之间的js方法是可以相互调用的.在调用方法前指定function所属对象即可,父页面获取iframe所属对象方法为:iframe的name.window.方法名(),iframe页面获取父页面所属对象方法为:parent.方法名(). 但是这里有一个非常重要的限制,由于浏览器基于安全考虑,是不允许js在不同域名间进行通信,所以父子页面必须属于同一个域,即使是相同主域下的不同二级域也是不行的. 对于父子页面完全属于两个不同的域名,那么它们之间永远无法直接进

php+ajax实现带进度条的大数据排队导出思路以及源码_AJAX相关

废话不多说,先上效果图: 点击导出,实现 点击导出 统计完成之后 点击确定 下面来谈谈实现的思路: 前面导出操作简单,从第二个导出操作开始: 点击"确定"调用exportCsv函数 复制代码 代码如下: <a class="on" href="javascript:exportCsv();"><em>导出</em></a> exportCvs函数如下function exportCsv(){ //清

php+ajax实现带进度条的大数据排队导出思路以及源码

废话不多说,先上效果图: 点击导出,实现 点击导出 统计完成之后 点击确定 下面来谈谈实现的思路: 前面导出操作简单,从第二个导出操作开始: 点击"确定"调用exportCsv函数 复制代码 代码如下:<a class="on" href="javascript:exportCsv();"><em>导出</em></a> exportCvs函数如下function exportCsv(){ //清除

如何实现开机启动、清缓存、杀进程、悬浮窗口单双击区分,附源码

转自http://www.cnblogs.com/Lefter/archive/2012/09/23/2699057.html#2479991 在本文,我们将实现以下功能: 开机启动 清除缓存 杀进程 悬浮窗口的单双击 统计RAM可用内存大小 一.开机启动 很多手机软件具备开机启动的功能,有时候让软件开机启动会非常实用.那么是如何实现开机启动的呢?通过查找我们了解到开机后系统会发送一个启动完毕的广播,Intent.ACTION_BOOT_COMPLETED,那么我们只需要自定义一个Broadca

js上移、下移、置顶、置底功能实现思路及源码展示

实现页面上列表内容上移.下移.置顶.置底 功能,主要实现思路是节点操作,比如说:上移,直接把点击项移动到前一个节点,以此类推,当然实际代码实现还要加些判断,如当前点击操作项是否已经是置底或置底了,如果是则给点相应提示,好让操作者知道发生了什么事情. 具体源码,大伙来感受下:  代码如下 复制代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv

PB调用WebService示例(含源码)

  说起PowerBuilder,可能大家都会嗤之以鼻,然后说一句:"哥们,还用呢啊"?记得以前看过的电影"功夫熊猫"里说:存在即是合理.我想说得是,世界上如果这个东西或这件事情存在,一定有它的道理,好像扯得有些远啊.... 好了,言归正传,PowerBuilder在Net没有成势之前,还是非常火的,因此,至今还有的公司在用它来开发,有人问,为什么不换呢.每个公司的情况都不相同,总有这种或那种的原因存在,导致无法更换,这点我们不去研究. 而现在WebService非

网页中JS方法在iframe父子窗口之间调用简单实例

父窗口页面:  代码如下 复制代码 <html> <head> <script type="text/javascript">   function hello(){      alert("parent.html------>I'matparent.html"); }   function callChild() {      //myFrame是iframe的name      //myFrame.window.func

父窗口与子窗口相互调用js代码(1/3)

父页面调用子页面中的js 我们先创建一个子窗体 复制代码 代码如下: var win $(function () { root = $('#root').val();//设置根目录 }); function openplayer(id, type, add) { //这里是用来限制同一个窗口只能弹出一次的 //其实就算不做限制,只要window.open参数中的name相同,就不会重复打开 //window.open中的参数可以参考别的文章,有很多 if (win == null || win.