Flex 中子窗口通过事件刷新父窗口中的数据(转)

总共3个文件,一个名为Parent的application,一个名为Child的titleWindow,还有一个是自定义的一个事件。

Parent.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" minWidth="955" minHeight="600">
        <fx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.managers.PopUpManager;
                        
                        [Bindable]
                        public var ac:ArrayCollection=new ArrayCollection([
                                {name:"周结",sex:"男",age:"23"},
                                {name:"小静",sex:"女",age:"19"},
                                {name:"小二",sex:"男",age:"20"},
                                {name:"大牛",sex:"男",age:"44"}
                        ]); 
                        private var child:Child = new Child();
                        protected function button1_clickHandler(event:MouseEvent):void
                        {
                                PopUpManager.addPopUp(child,this,true);
                                PopUpManager.centerPopUp(child);
                                child.addEventListener(MyEvent.SAVE_OK,saveSuccess);
                        }
                        
                        private function saveSuccess(e:MyEvent):void
                        {
                                ac.addItem(e.data);
                        }
                ]]>
        </fx:Script>

        <fx:Declarations>
                <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        </fx:Declarations>
        
        <mx:AdvancedDataGrid id="adg1" designViewDataType="flat" dataProvider="{ac}" width="455" height="240" x="307" y="79">
                <mx:columns>
                        <mx:AdvancedDataGridColumn headerText="姓名" dataField="name"/>
                        <mx:AdvancedDataGridColumn headerText="年龄" dataField="age"/>
                        <mx:AdvancedDataGridColumn headerText="性别" dataField="sex"/>
                </mx:columns>
        </mx:AdvancedDataGrid>
        <s:Button label="新增一条" click="button1_clickHandler(event)" x="518" y="365"/>
</s:Application>



Child.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="400" height="300">
        <s:layout>
                <s:BasicLayout/>
        </s:layout>

        <fx:Script>
                <![CDATA[
                        import mx.managers.PopUpManager;
                        protected function button1_clickHandler(event:MouseEvent):void
                        {
                                var obj:Object = new Object();
                                obj.name = dname.text;
                                obj.age = age.text;
                                obj.sex = sex.text;
                                this.dispatchEvent(new MyEvent(MyEvent.SAVE_OK,obj));
                                PopUpManager.removePopUp(this);
                        }
                ]]>
        </fx:Script>

        <fx:Declarations>
                <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        </fx:Declarations>
        <s:TextInput x="135" y="45" id="dname"/>
        <s:TextInput x="135" y="83" id="age"/>
        <s:TextInput x="135" y="127" id="sex"/>
        <s:Button x="164" y="196" label="保存" click="button1_clickHandler(event)"/>
</s:TitleWindow>


MyEvent.as

package event
{
        import flash.events.Event;
        
        public class MyEvent extends Event
        {
                public static const SAVE_OK:String="saveOk";
                private var _data:Object;
                public function MyEvent(type:String,data:Object=null, bubbles:Boolean=false,cancelable:Boolean=false)
                {
                        this._data=data;
                        super(type, bubbles, cancelable);
                }

                public function get data():Object
                {
                        return _data;
                }

                public function set data(value:Object):void
                {
                        _data = value;
                }

        }
}


转:http://www.ityangba.com/thread-302-1-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值