简单的说,后台返回多条数据时,flex返回的是一个List, 后台返回一条数据时,Flex回来的是一个ObjectProxy对象。所以导致错误。
解决办法,就是处理一下,始终放在一个ArrayCollection中。
import com.adobe.serializers.utility.TypeUtility;
//版本列表 [Bindable] private var versionArray:ArrayCollection = new ArrayCollection();
getVersionListResult.token = versionWebService.getVersionList(); getVersionListResult.token.addResponder(new AsyncResponder( function(event:ResultEvent, token:Object):void { //单条数据需要特殊处理 if(event.result!=null){ if(event.result is ObjectProxy) { //查询结果只有一条时,返回的是ObjectProxy,需要转型 var oneData:Version = TypeUtility.convertToStrongType(event.result,Version) as Version; //强转类型 versionArray.addItem(oneData); }else { //多条数据时,就是List了。 versionArray = ArrayCollection(event.result); } } if(versionArray.length==0) { Alert.show("没有其它版本可以导入。"); } }, function(info:Object, token:Object):void { Alert.show("Error: " + info); }, getVersionListResult.token ));
绑定:
<s:DropDownList id="versionList" width="300" dataProvider="{versionArray}" creationComplete="versionList_creationCompleteHandler(event)" labelField="versionNumber"> </s:DropDownList>
很麻烦~~
|