actionscript-3 - 当组合框未显示时,在 Flex 组合框中设置 selectedItem?

标签 actionscript-3 apache-flex flex4

我正在尝试在组合框(mx)上设置selectedItem。以下是代码:

callLater(function ():void {
        if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
            comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
        }
});

编辑:我正在以编程方式创建组合框:

var comboBox:ComboBox = new ComboBox();

这工作正常,并将 selectedItem 设置为数据提供程序中的第一个项目 - 但仅当组合框显示在屏幕上并且未隐藏在可折叠组中时

我遇到的情况是,我可能将组合框包含在可折叠组(我自己的组件)中,并且在展开折叠组之前不会显示(参见下图)

第一张图片:当组折叠并且组合框未显示但创建时 collapsed_groups

第二张图片:当展开折叠组以显示组合框时 - 请注意,数据提供程序中的第一个元素未选择为 selectedItem

Expanded Group

始终执行以下行

 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/

相关文章:

actionscript-3 - flash builder mobile,正确使用 PersistenceManager?

flash - 如何使用 AIR 将图像写入应用程序目录?

apache-flex - AIR/ ActionScript 3.0 : error logging

actionscript-3 - 弹性弹出窗口

android - flex android ActionScript native 扩展

apache-flex - Flex <fx :Script>? 中 'fb:purpose' 的目的是什么

apache-flex - 访问 List 中的 itemRenderer

actionscript-3 - AS3幻灯片播放的音频

apache-flex - Flex数据网格: Programmatically Highlighting Rows

apache-flex - 以编程方式获取或设置 Datagrid 中的单元格值