我遇到从下拉列表中选择自定义数据类型的问题。为了使其尽可能易于理解,我将使用一个简单的例子来说明我想做的事情
所以说我有自定义数据类型(Say类型的狗)。狗包含名称,品种和年龄。我将狗的每个实例存储在ArrayCollection中:
[Bindable]
private var dogData : ArrayCollection;
此ArrayCollection包含具有相应信息的1..N Dog对象。现在有一个下拉状态:
<s:DropDownList x="81" y="178" id="dogSelected" prompt="Dog Selected:" dataProvider="{dogData}" labelField="dogNameData" />
dogNameData假设来自一个自定义ActionScript类,该类在该对象中具有Dog的“name”字段。
现在我想从下拉菜单中选择一只狗。我试着这样做:
var theDog : Dog;
theDog = dogSelected.selectedItem;
但是,ActionScript似乎不喜欢这样。现在,我阅读并发现使用标签字段是能够选择它的方法。我无法选择狗项目,因此我可以将其绑定到:
var selectedDogBreed : String;
//var theDog : Dog = the selected object from my drop down
selectedDogBreed = theDog.breed
是否有人能够帮助我从下拉列表中选择此对象?非常感谢提前。
另外需要注意的是,ArrayCollection是动态生成的。在我的实际应用程序中,我试图解决这个问题,我的自定义数据数组是动态的。没有什么是硬编码的
答案 0 :(得分:0)
访问下拉菜单的selectedItem;你必须把它当作你想要的类型:
var theDog : Dog;
theDog = dogSelected.selectedItem as Dog
labelfield与访问selectedItem无关。 labelField仅由默认的itemRenderer用于决定在下拉列表中显示的值。如果您没有看到下拉菜单中显示的任何文字;或者看到[object object]或类似的东西,那就是labelField发挥作用的地方。
答案 1 :(得分:0)
你试过吗?
trace( 'name ' + (dogData[dogSelected.selectedIndex] as Dog).name )
或没有类型铸造
trace( 'name ' + dogSelected.selectedItem.name )
如果这不起作用,请发布您的错误代码。