FLEX Component 组件 汇总

[size=medium][b][align=center]Combox默认将对象中名为label的属性作为显示用的labelField[/align][/b][/size]
ComboBox中存放的list(这里list泛指array/arraylist/arraycollection等),如果list中的Object有label这个属性,则你不必为该comboBox指定显示用的labelField,默认就会用label这个属性作为labelField。下页面的例子就说明了这个问题:
[url]http://livedocs.adobe.com/flex/3_cn/langref/mx/controls/ComboBox.html[/url][quote]
<?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>
[/quote]如果将样例代码中的ArrayCollection cards 中的object的名为label的属性去掉,则在ComboBox中使用它作为dataProvider时必须为该ComboBox指定labelField。否则会得到如下的结果:
[img]http://dl.iteye.com/upload/attachment/486194/cd5942cd-c030-324e-a8eb-9473eb367826.png[/img]


在FLEX3及之前的<mx:ComboBox id="mxComboBoxId" />中所放对象的名为data的属性也是有特殊含义的:
如果<mx:ComboBox />中放的是对象有名为data的属性,你可以通过mxComboBoxId.value直接取到data属性的值。
可惜的是,FLEX4之后,Adobe建议使用<s:ComboBox />替换原来的<mx:ComboBox />;而新的<s:ComboBox />已经没有了value属性:
[url]http://flex.sys-con.com/node/312098[/url]


对于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:
[url]http://www.forta.com/blog/index.cfm/2006/11/22/Flex-ComboBox-With-selectedValue-Support[/url]
Set the selected item for a comboBox or dataGrid :
[url]http://www.cflex.net/showFileDetails.cfm?ObjectID=229&Object=File&ChannelID=1[/url]


checkbox作为datagird的列:
[url]http://srinichekuri.wordpress.com/[/url]


Vector 不能用作dataprovider


radioButton:
[url]http://colourgray.wordpress.com/2008/08/11/flex-getting-selected-radiobutton-value/[/url]
[url]http://blog.flexexamples.com/2008/01/06/clearing-a-selected-radiobutton-control-in-flex[/url]/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值