首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

一个RemoteObject,调用同一个方法,就是参数不一样,填充两个ComboBox,怎么实现

2012-03-21 
一个RemoteObject,调用同一个方法,就是参数不一样,填充两个ComboBox,如何实现我现在界面上又两个ComboBox,

一个RemoteObject,调用同一个方法,就是参数不一样,填充两个ComboBox,如何实现
我现在界面上又两个ComboBox,数据从一个表里面取出的。
 

XML code
     <mx:ComboBox id="week" dataProvider="{weeks}" labelField="name" />     <mx:ComboBox id="day" dataProvider="{days}" labelField="name" />


查询星期数据:
XML code
   private function init():void{     krSysQueryDefendService.query(" QTYPE = 'week'", "0");     krSysQueryDefendService.query.addEventListener(ResultEvent.RESULT, getWeekHandler);   }   [Bindable]   private var weeks: ArrayCollection = new ArrayCollection();   private function getWeekHandler(event: ResultEvent): void{      weeks = ArrayCollection(event.result);   }



查询天数数据:
XML code
      krSysQueryDefendService.query(" QTYPE = 'day'", "0");   [Bindable]   private var days: ArrayCollection = new ArrayCollection();    private function getDayHandler(event: ResultEvent): void{    days = ArrayCollection(event.result);   }            


我如何实现这种情况,,我前面把krSysQueryDefendService.query(" QTYPE = 'day'", "0");
放在getWeekHandler方法里面,但是不能实现,,如果定义两个RemoteObject,,那是可以实现的,但是那样感觉不是很合理。。

[解决办法]
最优的解决办法是,只发一次请求,把参数都传过去,那边也都检索出相应的数据,一次性的返回回来,并分别给两个ComboBox。

如果要用发两次请求的话,你先看一下RemoteObject的concurrency说明
指示如何处理对同一服务的多个调用的值。默认值为 multiple。允许使用的值包括: 
multiple 不取消现有请求,开发人员通过谨慎管理事件流来负责确保返回数据的一致性。此为默认。
single 一次仅允许执行一个请求;多个请求会生成错误。
last 发出请求会取消所有现有请求。

如果发2次请求不要修改concurrency属性,建议把query方法分成2个方法,这样他们可以分别监听自己的回调函数。

如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
[解决办法]
。。。定义一个变量 存储当前返回数据的 类型。。。
根据不同类型 插入不同 combobox

热点排行