ComboBox中存放的list(这里list泛指array/arraylist/arraycollection等),如果list中的Object有label这个属性,则你不必为该comboBox指定显示用的labelField,默认就会用label这个属性作为labelField。下页面的例子就说明了这个问题:
http://livedocs.adobe.com/flex/3_cn/langref/mx/controls/ComboBox.html
<?xml version="1.0"?> <!-- Simple example to demonstrate the ComboBox control. --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var cards:ArrayCollection = new ArrayCollection( [ {label:"Visa", data:1}, {label:"MasterCard", data:2}, {label:"American Express", data:3} ]); private function closeHandler(event:Event):void { myLabel.text = "You selected: " + ComboBox(event.target).selectedItem.label; myData.text = "Data: " + ComboBox(event.target).selectedItem.data; } ]]> </mx:Script> <mx:Panel title="ComboBox Control Example" height="75%" width="75%" layout="horizontal" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10"> <mx:ComboBox dataProvider="{cards}" width="150" close="closeHandler(event);"/> <mx:VBox width="250"> <mx:Text width="200" color="blue" text="Select a type of credit card."/> <mx:Label id="myLabel" text="You selected:"/> <mx:Label id="myData" text="Data:"/> </mx:VBox> </mx:Panel> </mx:Application>
在FLEX3及之前的<mx:ComboBox id="mxComboBoxId" />中所放对象的名为data的属性也是有特殊含义的:
如果<mx:ComboBox />中放的是对象有名为data的属性,你可以通过mxComboBoxId.value直接取到data属性的值。
可惜的是,FLEX4之后,Adobe建议使用<s:ComboBox />替换原来的<mx:ComboBox />;而新的<s:ComboBox />已经没有了value属性:
http://flex.sys-con.com/node/312098
对于ComboBox,有labelField可以用来得到combobox中显示的文本的内容;可是多数应用场景中,combobox中作为labelField显示的是描述或者中文文本信息,而保存时应该是存combobox中所选项的业务主键的。
对于一个修改vo的场景:
假设comboBox里放的是类型信息userType。
userVo里某字段存的是comboBox所列举userType的业务主键。
combobox在修改页面初始化时所展现的肯定应该是已被当前所修改vo选定的业务主键对应的labelField。这里有个问题:那怎么样通过vo.userTypeId:String定位到ArrayCollection<UserType>中对应的那条userType记录,而从使comboBox正确的显示为userVo修改前的用户类型信息那?
Adobe并没有为我们提供类似labelField那样的dataField或者说valueField。所以,我们只能自己想办法去做这个定位工作。
Flex ComboBox With selectedValue Support:
http://www.forta.com/blog/index.cfm/2006/11/22/Flex-ComboBox-With-selectedValue-Support
Set the selected item for a comboBox or dataGrid :
http://www.cflex.net/showFileDetails.cfm?ObjectID=229&Object=File&ChannelID=1
checkbox作为datagird的列:
http://srinichekuri.wordpress.com/
Vector 不能用作dataprovider
radioButton:
http://colourgray.wordpress.com/2008/08/11/flex-getting-selected-radiobutton-value/
http://blog.flexexamples.com/2008/01/06/clearing-a-selected-radiobutton-control-in-flex/