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

tcmis 2010-04-14 05:10:39
我现在界面上又两个ComboBox,数据从一个表里面取出的。

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


查询星期数据:

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);
}



查询天数数据:


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,,那是可以实现的,但是那样感觉不是很合理。。
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmis 2010-04-15
  • 打赏
  • 举报
回复
呵呵,,huangxin5257,老大,这个麻烦多了,,我现在一次性的把数据取出来了,分别填充到ComboBox的变量中,我想这样是最简单的。
老衲不是秃瓢 2010-04-15
  • 打赏
  • 举报
回复
。。。定义一个变量 存储当前返回数据的 类型。。。
根据不同类型 插入不同 combobox
huangxin5257 2010-04-15
  • 打赏
  • 举报
回复
比如Server端正常是返回一个List,你现在返回一个Map里面存放在List和flag
如果是检索weeks的话,
Map<String, List> result = new HashMap<String, List>();
result.put("list",weeksList); // weeksList是你检索week的数据list
result.put("owner","weeks");// 做个标记
如果是检索days的话,
Map<String, List> result = new HashMap<String, List>();
result.put("list",daysList); // daysList是你检索days的数据list
result.put("owner","days");// 做个标记

在as里面
var result:Object = event.result;
if (result.owner == "weeks") {
weeks = ArrayCollection(result.list);
} else {
days = ArrayCollection(result.list);
}

具体代码细节,可能还需要处理一下。
tcmis 2010-04-15
  • 打赏
  • 举报
回复
昨天晚上我就直接一次性的把数据提取出来,然后再分别填充到ComboBox了,试了几种方法都不行,把concurrency设置成single也是不行的。。。可能你说的在Server端增加个flag,,这个不知道如何实现。。
huangxin5257 2010-04-15
  • 打赏
  • 举报
回复
最优的解决办法是,只发一次请求,把参数都传过去,那边也都检索出相应的数据,一次性的返回回来,并分别给两个ComboBox。

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

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

如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
huangxin5257 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tcmis 的回复:]
呵呵,,huangxin5257,老大,这个麻烦多了,,我现在一次性的把数据取出来了,分别填充到ComboBox的变量中,我想这样是最简单的。
[/Quote]
正常这种也应该一次性的全读取过来。减少Sever端的并发次数

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧