package com.view { import com.skins.ComboBoxButtonSkin; import mx.collections.ArrayCollection; import mx.events.FlexEvent; import mx.resources.ResourceManager; import mx.rpc.events.ResultEvent; import com.utils.CommonUtility; import spark.components.ComboBox; import spark.events.IndexChangeEvent; import spark.events.ListEvent; public class Selector extends ComboBox { // 控件对应的公用代码 private var _code:String; private var _selectedID:Number=-1; private var _selectedCode:String; // 上级ID private var _param:String; public var hasBlank:Boolean=false; public var blankCode:CodeVo; public function Selector() { super(); this.width=300; this.labelFunction = codeLabelFunction; this.height=28; super.setStyle("fontWeight", "normal"); super.setStyle("openDuration", "0"); super.setStyle("closeDuration", "0"); super.setStyle("selectionDuration", "0"); this.addEventListener(IndexChangeEvent.CHANGE,onChangeHandler); this.addEventListener(FlexEvent.CREATION_COMPLETE,creationCompleteHandler); } public function get param():String { return _param; } public function set param(value:String):void { _param = value; } protected function Yjpt_resultHandler(event:ResultEvent):void { var ret:ArrayCollection=event.result as ArrayCollection; var codes:ArrayCollection = new ArrayCollection; for each(var r:Object in ret) { var c:CodeVo = new CodeVo; c.id = r.ID; c.code = r.CODE; c.label = r.MC; codes.addItem(c); } this.dataProvider = codes; if(this.hasBlank) { if(!blankCode){ blankCode= new CodeVo(); blankCode.id=0; blankCode.label=""; blankCode.code=""; } this.dataProvider.addItemAt(blankCode,0); } if(null != codes && codes.length>0) { for each(var code:CodeVo in codes) { if(code.id == selectedID) { this.selectedItem = code; break; } } } } protected function creationCompleteHandler(event:FlexEvent):void { this.textInput.editable = false; this.textInput.setStyle("borderColor","#D2D2D2"); this.openButton.setStyle("skinClass",ComboBoxButtonSkin); CommonUtility.callRemote("gisController","getCodeGroup",Yjpt_resultHandler,code,param); } public function onChangeHandler(e:IndexChangeEvent):void { if(e.newIndex <0) { return; } var code:CodeVo = this.dataProvider.getItemAt(e.newIndex) as CodeVo; this._selectedID = code.id; this._selectedCode = code.label; } /** * 树图标签显示 */ public function codeLabelFunction(item:Object):String { if(item ==null) { return ""; } var _functionName:String=resourceManager.getString("select",item.label); if(null == _functionName || _functionName=="") { _functionName = item.label; } return _functionName; } public function get code():String { return _code; } public function set code(value:String):void { _code = value; } public function get selectedCode():String { return _selectedCode; } public function set selectedCode(value:String):void { _selectedCode = value; if(_selectedCode==null){ this.selectedItem = null; this.textInput.text=""; return; } var codes:ArrayCollection = this.dataProvider as ArrayCollection; if(null != codes && codes.length>0) { for each(var code:CodeVo in codes) { if(code.code == value) { this.selectedItem = code; return; } } } this.selectedItem = null; } /** 选中项 */ public function get selectedID():Number { return _selectedID; } /** * @private */ public function set selectedID(value:Number):void { _selectedID = value; if(_selectedID==-1){ this.selectedItem = null; this.textInput.text=""; return; } var codes:ArrayCollection = this.dataProvider as ArrayCollection; if(null != codes && codes.length>0) { for each(var code:CodeVo in codes) { if(code.id == value) { this.selectedItem = code; return; } } } this.selectedItem = null; } } }