flex学习札记-DataGrid,ComboBox
flex学习笔记-DataGrid,ComboBox
事件:父页面添加监听子页面触发这个时候需要设置监听的第三个参数为true
appevent类,这个类中重要的是重写clone方法
事件:父页面添加监听子页面触发这个时候需要设置监听的第三个参数为true
<!--flex4画线--> <s:Spacer height="100%"/> <s:Line width="100%"> <s:stroke> <s:SolidColorStroke color="0x000000" weight="1" caps="square"/> </s:stroke> </s:Line> <mx:DataGrid width="100%" height="100%" dataProvider="{list}"> <mx:columns> <mx:DataGridColumn dataField="VEHICLE_LOCATION" headerText="位置"/> <mx:DataGridColumn dataField="VEHICLE_STATUS" headerText="状态"/> <mx:DataGridColumn headerText="时间" labelFunction="myLabelFunctionDG"/> <mx:DataGridColumn dataField="GPS_SPEED" headerText="速度"/> <mx:DataGridColumn dataField="GPS_DIRECTION" headerText="方向"/> </mx:columns> </mx:DataGrid> <s:ComboBox id="category" dataProvider="{list}" width="200" labelFunction="myLabelFunction" keyUp="setNextFocus_keyUpHandler(event)" change="category_changeHandler(event)" />
protected function setNextFocus_keyUpHandler(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { focusManager.setFocus(focusManager.getNextFocusManagerComponent()); } } protected function enter_keyUpHandler(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { event.target.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } } protected function category_changeHandler(event:IndexChangeEvent):void { if(-3 == event.newIndex) { category.selectedIndex = event.oldIndex; } } private function myLabelFunction(item:Object):String { if(null == item || instanceOf(String).matches(item)) { item = category.dataProvider.getItemAt(category.selectedIndex); } return item.value+"_"+item.label; } private function myLabelFunctionDG(item:Object, column:DataGridColumn):String { var track:TrackModel = item as TrackModel; return Util.dateFormat(track.CREATE_TIME, Util.FORMAT_FULL); }
package { import flash.events.Event; import flash.events.EventDispatcher; /**事件管理类,负责总事件的分发*/ public class EventBus extends EventDispatcher { public function EventBus() { if(manager) throw new Error("EventBus is must be singleton!"); } private static var manager:EventBus; public static function getInstance():EventBus { if(!manager)manager = new EventBus(); return manager; } public function dispatch(type:String):Boolean { return dispatchEvent(new Event(type)); } } }
appevent类,这个类中重要的是重写clone方法
package { import flash.events.Event; /**自定义事件,可以在data属性传递一个object值*/ public class AppEvent extends Event { /**登录成功事件*/ public static const LOGIN_SUCCESS:String = "loginSuccess"; /**登录失败事件*/ public static const LOGIN_FAULT:String = "loginFault"; /**注册成功事件*/ public static const REGISTER_SUCCESS:String = "registerSuccess"; /**注册失败事件*/ public static const REGISTER_FAULT:String = "registerFault"; /**关闭弹出窗口事件*/ public static const TITLE_WINDOW_CLOSE:String = "menuTitleWindowClose"; /**地图加载完毕事件*/ public static const MAP_LOADED:String = "googleMapLoaded"; public function AppEvent(type:String, data:Object = null, callback:Function = null) { super(type, false, false); _data = data; _callback = callback; } private var _data:Object; private var _callback:Function; public function get data():Object { return _data; } public function set data(value:Object):void { _data = value; } public function get callback():Function { return _callback; } public function set callback(value:Function):void { _callback = value; } public override function clone():Event { return new AppEvent(this.type, this.data); } } }