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

Posted

技术标签:

【中文标题】Flex ComboBox、默认值和数据提供者【英文标题】:Flex ComboBox, default value and dataproviders 【发布时间】:2010-09-07 07:20:50 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

我有一个 ComboBox,它有一个包含对象的 ArrayCollection,因为它是数据提供者。当应用程序运行时,它使用一个 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" />

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

这可以用于下面的代码选择组合框的默认值

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" />

【讨论】:

以上是关于Flex ComboBox、默认值和数据提供者的主要内容,如果未能解决你的问题,请参考以下文章

COMBOBOX绑定DICTIONARY做为数据源

如何根据已更改的绑定 dataProvider 内容调整 Flex 3 ComboBox 宽度?

jQuery easyui 中 combobox的事件处理吗

C#winform,combobox添加可筛选功能

Flex 按钮皮肤恢复默认设置

Luigi 参数默认值和模拟