一个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