Selector.as 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.view
  2. {
  3. import com.skins.ComboBoxButtonSkin;
  4. import mx.collections.ArrayCollection;
  5. import mx.events.FlexEvent;
  6. import mx.resources.ResourceManager;
  7. import mx.rpc.events.ResultEvent;
  8. import com.utils.CommonUtility;
  9. import spark.components.ComboBox;
  10. import spark.events.IndexChangeEvent;
  11. import spark.events.ListEvent;
  12. public class Selector extends ComboBox
  13. {
  14. // 控件对应的公用代码
  15. private var _code:String;
  16. private var _selectedID:Number=-1;
  17. private var _selectedCode:String;
  18. // 上级ID
  19. private var _param:String;
  20. public var hasBlank:Boolean=false;
  21. public var blankCode:CodeVo;
  22. public function Selector()
  23. {
  24. super();
  25. this.width=300;
  26. this.labelFunction = codeLabelFunction;
  27. this.height=28;
  28. super.setStyle("fontWeight", "normal");
  29. super.setStyle("openDuration", "0");
  30. super.setStyle("closeDuration", "0");
  31. super.setStyle("selectionDuration", "0");
  32. this.addEventListener(IndexChangeEvent.CHANGE,onChangeHandler);
  33. this.addEventListener(FlexEvent.CREATION_COMPLETE,creationCompleteHandler);
  34. }
  35. public function get param():String
  36. {
  37. return _param;
  38. }
  39. public function set param(value:String):void
  40. {
  41. _param = value;
  42. }
  43. protected function Yjpt_resultHandler(event:ResultEvent):void
  44. {
  45. var ret:ArrayCollection=event.result as ArrayCollection;
  46. var codes:ArrayCollection = new ArrayCollection;
  47. for each(var r:Object in ret)
  48. {
  49. var c:CodeVo = new CodeVo;
  50. c.id = r.ID;
  51. c.code = r.CODE;
  52. c.label = r.MC;
  53. codes.addItem(c);
  54. }
  55. this.dataProvider = codes;
  56. if(this.hasBlank)
  57. {
  58. if(!blankCode){
  59. blankCode= new CodeVo();
  60. blankCode.id=0;
  61. blankCode.label="";
  62. blankCode.code="";
  63. }
  64. this.dataProvider.addItemAt(blankCode,0);
  65. }
  66. if(null != codes && codes.length>0)
  67. {
  68. for each(var code:CodeVo in codes)
  69. {
  70. if(code.id == selectedID)
  71. {
  72. this.selectedItem = code;
  73. break;
  74. }
  75. }
  76. }
  77. }
  78. protected function creationCompleteHandler(event:FlexEvent):void
  79. {
  80. this.textInput.editable = false;
  81. this.textInput.setStyle("borderColor","#D2D2D2");
  82. this.openButton.setStyle("skinClass",ComboBoxButtonSkin);
  83. CommonUtility.callRemote("gisController","getCodeGroup",Yjpt_resultHandler,code,param);
  84. }
  85. public function onChangeHandler(e:IndexChangeEvent):void
  86. {
  87. if(e.newIndex <0)
  88. {
  89. return;
  90. }
  91. var code:CodeVo = this.dataProvider.getItemAt(e.newIndex) as CodeVo;
  92. this._selectedID = code.id;
  93. this._selectedCode = code.label;
  94. }
  95. /**
  96. * 树图标签显示
  97. */
  98. public function codeLabelFunction(item:Object):String
  99. {
  100. if(item ==null)
  101. {
  102. return "";
  103. }
  104. var _functionName:String=resourceManager.getString("select",item.label);
  105. if(null == _functionName || _functionName=="")
  106. {
  107. _functionName = item.label;
  108. }
  109. return _functionName;
  110. }
  111. public function get code():String
  112. {
  113. return _code;
  114. }
  115. public function set code(value:String):void
  116. {
  117. _code = value;
  118. }
  119. public function get selectedCode():String
  120. {
  121. return _selectedCode;
  122. }
  123. public function set selectedCode(value:String):void
  124. {
  125. _selectedCode = value;
  126. if(_selectedCode==null){
  127. this.selectedItem = null;
  128. this.textInput.text="";
  129. return;
  130. }
  131. var codes:ArrayCollection = this.dataProvider as ArrayCollection;
  132. if(null != codes && codes.length>0)
  133. {
  134. for each(var code:CodeVo in codes)
  135. {
  136. if(code.code == value)
  137. {
  138. this.selectedItem = code;
  139. return;
  140. }
  141. }
  142. }
  143. this.selectedItem = null;
  144. }
  145. /** 选中项 */
  146. public function get selectedID():Number
  147. {
  148. return _selectedID;
  149. }
  150. /**
  151. * @private
  152. */
  153. public function set selectedID(value:Number):void
  154. {
  155. _selectedID = value;
  156. if(_selectedID==-1){
  157. this.selectedItem = null;
  158. this.textInput.text="";
  159. return;
  160. }
  161. var codes:ArrayCollection = this.dataProvider as ArrayCollection;
  162. if(null != codes && codes.length>0)
  163. {
  164. for each(var code:CodeVo in codes)
  165. {
  166. if(code.id == value)
  167. {
  168. this.selectedItem = code;
  169. return;
  170. }
  171. }
  172. }
  173. this.selectedItem = null;
  174. }
  175. }
  176. }