当Combobox不显示时,在Flex Combobox上设置selectedItem?
我正尝试在comboBox(mx)上设置selectedItem。 以下是代码:
callLater(function ():void {
if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
}
});
编辑:我正在编程创建Comboboxes:
var comboBox:ComboBox = new ComboBox();
这可以正常工作,并将selectedItem设置为来自数据提供者的第一项 - 但只有当组合框显示在屏幕上而不隐藏在可折叠组中时 。
我有一种情况,我可能会将组合框包含在可折叠组(我自己的组件)中,并且在展开折叠组之后才显示(请参阅下面的图像)
第一张图片:当组合被折叠并且组合框未被显示但被创建时
第二张图片:展开折叠组以显示组合框时 - 请注意,数据提供者中的第一个元素未被选为selectedItem
以下行总是执行
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
但是,如果组合框被封装在折叠组中,则不会选择第一项 - 当组合框包含在扩展组中时可以正常工作。
我认为这是一个灵活的错误 - 除非有人认为是另一回事?
问题是,你无法知道对象何时添加到舞台上。 正如你所提到的,如果组件不可见,则不会设置该项目。
“创建完成”不会被多次调用,因此您需要另一种方式来执行此操作。 为了确保项目在被再次显示后被设置为组件,只需在组合框本身上调用“callLater”方法(然后在组件被再次渲染后调用该方法,而不是整个应用程序)
var comboBox:ComboBox = new ComboBox();
comboBox.callLater(function ():void {
if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
}
});
我以前看过这个问题。 我通过设置全局变量并将comboBox的选定项设置为变量的值来解决此问题。
例如:
private var comboBoxValue:int = 0;
然后在你的组合框上:
<mx:ComboBox id="myComboBox" updateComplete="{myComboBox.selectedItem = comboBoxValue}" change="functionToChangeVariable()"/>
我从flex sdk开始使用combobox 3.我曾经设置selectedIndex而不是selectedItem。 一种解决方法,但总是适用于我:
<ComboBox id="comboBox"
dataProvider="{model.dataProvider}"
selectedIndex="{getItemIndex(comboBox.dataProvider, model.currentItem}"
change="model.currentItem = comboBox.selectedItem"/>
//getItemIndex - function with simple list.getItemIndex()
适用于mx和spark。
链接地址: http://www.djcxy.com/p/34581.html上一篇: Set selectedItem on a Flex Combobox when the Combobox is not displayed?