<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,,那是可以实现的,但是那样感觉不是很合理。。
8 个解决方案
#1
#2
最优的解决办法是,只发一次请求,把参数都传过去,那边也都检索出相应的数据,一次性的返回回来,并分别给两个ComboBox。
如果要用发两次请求的话,你先看一下RemoteObject的concurrency说明
指示如何处理对同一服务的多个调用的值。默认值为 multiple。允许使用的值包括:
multiple 不取消现有请求,开发人员通过谨慎管理事件流来负责确保返回数据的一致性。此为默认。
single 一次仅允许执行一个请求;多个请求会生成错误。
last 发出请求会取消所有现有请求。
如果发2次请求不要修改concurrency属性,建议把query方法分成2个方法,这样他们可以分别监听自己的回调函数。
如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
如果要用发两次请求的话,你先看一下RemoteObject的concurrency说明
指示如何处理对同一服务的多个调用的值。默认值为 multiple。允许使用的值包括:
multiple 不取消现有请求,开发人员通过谨慎管理事件流来负责确保返回数据的一致性。此为默认。
single 一次仅允许执行一个请求;多个请求会生成错误。
last 发出请求会取消所有现有请求。
如果发2次请求不要修改concurrency属性,建议把query方法分成2个方法,这样他们可以分别监听自己的回调函数。
如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
#3
昨天晚上我就直接一次性的把数据提取出来,然后再分别填充到ComboBox了,试了几种方法都不行,把concurrency设置成single也是不行的。。。可能你说的在Server端增加个flag,,这个不知道如何实现。。
#4
#5
比如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);
}
具体代码细节,可能还需要处理一下。
如果是检索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);
}
具体代码细节,可能还需要处理一下。
#6
。。。定义一个变量 存储当前返回数据的 类型。。。
根据不同类型 插入不同 combobox
根据不同类型 插入不同 combobox
#7
呵呵,,huangxin5257,老大,这个麻烦多了,,我现在一次性的把数据取出来了,分别填充到ComboBox的变量中,我想这样是最简单的。
#8
正常这种也应该一次性的全读取过来。减少Sever端的并发次数
#1
#2
最优的解决办法是,只发一次请求,把参数都传过去,那边也都检索出相应的数据,一次性的返回回来,并分别给两个ComboBox。
如果要用发两次请求的话,你先看一下RemoteObject的concurrency说明
指示如何处理对同一服务的多个调用的值。默认值为 multiple。允许使用的值包括:
multiple 不取消现有请求,开发人员通过谨慎管理事件流来负责确保返回数据的一致性。此为默认。
single 一次仅允许执行一个请求;多个请求会生成错误。
last 发出请求会取消所有现有请求。
如果发2次请求不要修改concurrency属性,建议把query方法分成2个方法,这样他们可以分别监听自己的回调函数。
如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
如果要用发两次请求的话,你先看一下RemoteObject的concurrency说明
指示如何处理对同一服务的多个调用的值。默认值为 multiple。允许使用的值包括:
multiple 不取消现有请求,开发人员通过谨慎管理事件流来负责确保返回数据的一致性。此为默认。
single 一次仅允许执行一个请求;多个请求会生成错误。
last 发出请求会取消所有现有请求。
如果发2次请求不要修改concurrency属性,建议把query方法分成2个方法,这样他们可以分别监听自己的回调函数。
如果都用同一个query方法,又是同一个回调函数,那要在回调函数里面区分开来,可以在Server端增加个flag。从代码角度看,最不推荐这么做。
#3
昨天晚上我就直接一次性的把数据提取出来,然后再分别填充到ComboBox了,试了几种方法都不行,把concurrency设置成single也是不行的。。。可能你说的在Server端增加个flag,,这个不知道如何实现。。
#4
#5
比如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);
}
具体代码细节,可能还需要处理一下。
如果是检索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);
}
具体代码细节,可能还需要处理一下。
#6
。。。定义一个变量 存储当前返回数据的 类型。。。
根据不同类型 插入不同 combobox
根据不同类型 插入不同 combobox
#7
呵呵,,huangxin5257,老大,这个麻烦多了,,我现在一次性的把数据取出来了,分别填充到ComboBox的变量中,我想这样是最简单的。
#8
正常这种也应该一次性的全读取过来。减少Sever端的并发次数