我有一个 Flex ComboBox
,它被dataprovider
所有的东西都很好......
我现在想在 0 索引处添加一个默认的“--选择一个项目--”选项,我怎样才能做到这一点并且仍然使用一个dataprovider
?我没有看到任何这样的例子,但我无法想象这很难......
我有一个 Flex ComboBox
,它被dataprovider
所有的东西都很好......
我现在想在 0 索引处添加一个默认的“--选择一个项目--”选项,我怎样才能做到这一点并且仍然使用一个dataprovider
?我没有看到任何这样的例子,但我无法想象这很难......
如果您不需要选择默认项目,则可以使用的prompt
属性ComboBox
并将其设置selectedIndex
为 -1。这将显示您设置propmt
为选定值的字符串,直到用户选择另一个。但是,它不会出现在选项列表中。
我今天遇到了这个问题,想分享我的解决方案。
我有一个 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" />
我过去处理这个问题的方法是创建一个新集合作为组合框的数据提供者,然后我监听原始源的更改(使用mx.BindingUtils.ChangeWatcher
)。当我收到这样的通知时,我会重新创建我的自定义数据提供程序。
我希望我知道一个更好的方法来解决这个问题;我会监控这个问题以防万一。
这可以用于下面的代码选择组合框的默认值
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}" />