我使用调用XML文件的HTTPservice动态填充ComboBox。这一切都可以通过Flash Build 4界面实现。以下是ComboBox代码:
<s:ComboBox id="cbSockOptions" change="cbSockOptions_changeHandler(event)"
selectedIndex="1"
enabled="true"
creationComplete="cbSockOptions_creationCompleteHandler(event)"
labelField="Symbol">
<s:AsyncListView list="{TypeUtility.convertToCollection(Operation1Result2.lastResult.Company)}"/>
</s:ComboBox>
如上所述,上面是填充ComboBox的代码。我想从ComboBox中检索seleted值,但是当我这样做时,我得到以下输出(例如,当在Label中显示时):
[object Company_Type]
我目前正在使用以下代码来检索ComboBox的值
cbSockOptions.selectedItem;
我在这个主题上所做的所有阅读都说我必须在我的ComboBox中指定一个'labelField',我这样做。但是,我仍然将[object Company_Type]视为输出,而不是实际值。
帮助! :(
答案 0 :(得分:1)
labelfunction属性仅适用于在ComboBox中显示值。 ComboBox有一个selectedLabel属性,但它没有标记为可绑定。如果要在其他地方使用selectedItem,则必须直接访问属性。
从简单到复杂,你可以尝试
<s:Label text="{ cbSockOptions.selectedItem[cbSockOptions.labelField] }" />
但是我认为如果你因为数组访问器而这样做,你会得到绑定警告 - 并且永远不会引起警告。
更好的想法是将selectedItem转换为与TypeUtility.convertToCollection创建的集合中的项目相同的类型,例如。
<s:Label text="{ CompanyClassName( cbSockOptions.selectedItem ).propertyToDisplay }" />
最好的想法是使用cbSockOptions_changeHandler设置一个用于绑定的局部变量(例如selectedCompany)。如果您的类是Bindable,那么您可以使用selectedCompany
<s:Label text="{ selectedCompany.propertyToDisplay }" />
否则,如果该类不可绑定,那么您可以使用另一个属性来存储值
<s:Label text="{ propertyToDisplay }" />
答案 1 :(得分:1)
发布此信息可帮助有类似问题的人。我的火花列表上有一个[object Object]问题,他们会显示使用静态数据,但不是从服务器中提取的动态集合。经过无数次的挫折,我开始摆弄。我使用自定义皮肤和项目渲染,所以我使用标准火花列表,它工作。我将自定义项目渲染添加到标准火花列表,并再次获得[对象对象]。所以我确定问题出在我的自定义项目渲染上。
解决方案...... 默认情况下,Flash Builder 4使基本项目渲染器从“{data}”对象中获取字符串信息。只需将其更改为项呈示器中的“{label}”,即可将labelFunction与复杂对象和自定义外观一起使用。