Flex 父窗口監聽子窗口關閉並刷新DataGrid

1.父窗口

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			import mx.events.DragEvent;
			import mx.events.ChildExistenceChangedEvent;
			import mx.collections.ArrayCollection;
			import mx.managers.PopUpManager;
			import mx.controls.Alert;
			import mx.events.CloseEvent;
			
            [Bindable]
            public var initDG:ArrayCollection=new ArrayCollection([
                {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
                {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}]);
            public function alertDiv():void
            {
            	var win:tanchu = new tanchu();
            	win=tanchu(PopUpManager.createPopUp(this,tanchu,true));
	    		//win.data=seq;
	    		//win.addEventListener(CloseEvent.CLOSE,addObject);
	    		PopUpManager.centerPopUp(win);
	    		win.addEventListener(MyEvent.SAVE_OK,addObject);
	    		//this.systemManager.addEventListener(CloseEvent.CLOSE,addObject);
            }
            public function addObject(evt:MyEvent):void
            {
            	Alert.show("ok");
            	var obj:Object={Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99};
            	initDG.addItem(obj);
//            	myGrid.invalidateList();
            	//myGrid.validateNow();
            }
		]]>
	</mx:Script>
	<mx:VBox width="100%" height="100%" backgroundColor="white">
		<mx:Button label="彈出窗口" click="alertDiv()"/>
		<mx:DataGrid id="myGrid" width="350" height="200" dataProvider="{initDG}">
			<mx:columns>
				<mx:DataGridColumn dataField="Album"/>
				<mx:DataGridColumn dataField="Price"/>
			</mx:columns>
		</mx:DataGrid>
	</mx:VBox>
</mx:Application>
2.子窗口

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
	<mx:Script>
		<![CDATA[
			import mx.managers.PopUpManager;
			import mx.controls.Alert;
			import mx.events.CloseEvent;
			
			public function closetanchu():void
			{
				var obj:Object={Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99};
				//var showdd:showDataGrid=new showDataGrid();
				//showdd.initDG.addItem(obj);
				//showdd.addObject();
				//Alert.show(showdd.initDG.length+"");
				//this.dispatchEvent(new MyEvent(MyEvent.SAVE_OK,obj));
				this.dispatchEvent(new MyEvent(MyEvent.SAVE_OK));
				PopUpManager.removePopUp(this);
				//dispatchEvent(new Event(CloseEvent.CLOSE));
			}
		]]>
	</mx:Script>
	<mx:Button label="歡迎" click="closetanchu()"/>
</mx:Canvas>
3.自定義事件

package
{
	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;
		}
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章