专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Flex

FLEX Component 组件 集锦

发布时间:2011-06-27 19:47:55 文章来源:www.iduyao.cn 采编人员:星星草
FLEX Component 组件 汇总
Combox默认将对象中名为label的属性作为显示用的labelField

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>
如果将样例代码中的ArrayCollection cards 中的object的名为label的属性去掉,则在ComboBox中使用它作为dataProvider时必须为该ComboBox指定labelField。否则会得到如下的结果:



在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/
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: