Flex ComboBox,默认值和数据提供者

时间:2008-08-29 20:21:14

标签: flex data-binding combobox

我有一个由ComboBox填充的Flex dataprovider一切都很好......

我现在想在0索引处添加默认的“ - 选择项目 - ”选项,我该怎么做呢,仍然使用dataprovider?我没有看到任何这样的例子,但我无法想象这很难...

4 个答案:

答案 0 :(得分:35)

如果您不需要选择默认项,则可以使用prompt的{​​{1}}属性并将ComboBox设置为-1。这会将您设置为selectedIndex的字符串显示为选定的值,直到用户选择另一个。但是,它不会出现在选项列表中。

答案 1 :(得分:4)

我今天遇到了这个问题,想分享我的解决方案。

我有一个ComboBox,它有一个包含Objects的ArrayCollection,因为它是dataprovider。当应用程序运行时,它使用RemoteObject熄灭并获取ArrayCollection / Objects。在我的该调用的事件处理程序中,我只是将它附加到ArrayCollection的开头并选择它:

var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;

这是我的ComboBox的参考资料:

<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />

答案 2 :(得分:1)

我过去处理这个问题的方法是创建一个新的集合作为组合框的数据提供者,然后我监听原始源的更改(使用mx.BindingUtils.ChangeWatcher)。当我收到这样的通知时,我会重新创建自定义数据提供程序。

我希望我知道更好的方法来解决这个问题;为了以防万一,我会监控这个问题。

答案 3 :(得分:0)

这可以使用以下代码来选择组合框的选定默认值

var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
  if(comboBox.dataProvider[objIndex].label == index)
  {
     comboBox.selectedIndex = objIndex;
     break;
  }
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />