我正在尝试在组合框(mx)上设置selectedItem。以下是代码:
callLater(function ():void {
if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
}
});
编辑:我正在以编程方式创建组合框:
var comboBox:ComboBox = new ComboBox();
这工作正常,并将 selectedItem 设置为数据提供程序中的第一个项目 - 但仅当组合框显示在屏幕上并且未隐藏在可折叠组中时。
我遇到的情况是,我可能将组合框包含在可折叠组(我自己的组件)中,并且在展开折叠组之前不会显示(参见下图)
第一张图片:当组折叠并且组合框未显示但创建时
第二张图片:当展开折叠组以显示组合框时 - 请注意,数据提供程序中的第一个元素未选择为 selectedItem
始终执行以下行
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
但是,当组合框包含在折叠组中时,不会选择第一项 - 当组合框包含在展开组中时,效果很好。
我认为这是 Flex 中的一个错误 - 除非有人不这么认为?
最佳答案
问题是您无法知道对象何时添加到舞台上。正如您已经提到的,如果组件不可见,则不会设置该项目。
创建完成不会被多次调用,因此您需要另一种方法来完成它。 要确保该项目在再次可见后设置为组件,只需在组合框本身上调用“callLater”方法(然后该方法将在组件再次呈现后调用,而不是整个应用程序)
var comboBox:ComboBox = new ComboBox();
comboBox.callLater(function ():void {
if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
}
});
关于actionscript-3 - 当组合框未显示时,在 Flex 组合框中设置 selectedItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817930/