Apache flex 将dataProvider设置为组合框

Apache flex 将dataProvider设置为组合框,apache-flex,combobox,dataprovider,arraycollection,Apache Flex,Combobox,Dataprovider,Arraycollection,以编程方式将arrayCollection设置为组合框的数据提供程序时,如果arrayCollection只有一个元素,我需要执行一个小验证: > public resultHandler(event:ResultEvent):void{ arrColl = event.result.FlexData.ListData as ArrayCollection; //to check if the arrColl has only one element if(arrColl

以编程方式将arrayCollection设置为组合框的数据提供程序时,如果arrayCollection只有一个元素,我需要执行一个小验证:

> public resultHandler(event:ResultEvent):void{

   arrColl = event.result.FlexData.ListData as ArrayCollection; 

//to check if the arrColl has only one element 

if(arrColl == null)
      myComboBox.dataProvider = event.result.FlexData.ListData

else

 myComboBox.dataProvider = arrColl;

}

我想知道,是否有办法每次都跳过此验证。是否有办法设置dataProvider,以便我不必检查集合是否有一个或多个元素?

没有内置的方法来执行此操作

您需要:

  • 创建一个执行此操作的实用程序方法。比如说

    myComboBox.dataProvider = ComboBoxUtil.setDataProvider(collection);
    
  • 子类化ComboBox控件并覆盖dataProvider setter,您可以在其中包含此逻辑


我有点困惑。看起来无论返回什么,都是将数据提供程序绑定到
事件.result.FlexData.ListData
。唯一不同的是您是绑定到ArrayCollection还是
event.result.FlexData.ListData
中返回的任何对象。我不知道你在哪里检查是否只有一个元素。如果只返回一个项目,您是否有理由不返回一个项目的
ArrayCollection
?这将使您不必执行此检查。@从服务器返回的XML中的jason节点有一个或多个节点。因此,将ListData绑定为ArrayCollection符合我的目的。如果arrColl只有一个元素,它仍然为null。。当您执行null验证时,你实际上是在检查它是否有一个元素。我想克里斯托弗的回答解释了这一点,也符合我的目的。谢谢。