打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
带有checkBox的ComBoBox

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      xmlns:arcadiocarballares="com.arcadiocarballares.*"
      minWidth="955" minHeight="600">
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import mx.collections.XMLListCollection;
   import mx.rpc.events.ResultEvent;
   import mx.events.CollectionEvent;
   import mx.controls.ComboBox;
   import mx.controls.Alert;
   import mx.collections.ArrayCollection;
   import mx.events.DropdownEvent;
   
   [Bindable]
   private var myText:String='';
   [Bindable]
   private var items1:ArrayCollection=new ArrayCollection([
    {label:'label 1', value:1, assigned:true},
    {label:'label 2', value:2},
    {label:'label 3', value:3},
    {label:'label 4', value:4},
    {label:'label 5', value:5},
    {label:'label 6', value:6},
    {label:'label 7', value:7},
    {label:'label 8', value:8},
    {label:'label 9', value:9},
    {label:'label 10', value:10},
    {label:'label 11', value:11},
    {label:'label 12', value:12},
    {label:'label 13', value:13},
    {label:'label 14', value:14}
   ]);
   
   private function onAddItem2 ():void {
    //Alert.show(myText);
    myText='';
    var items1:ArrayCollection=myCombo2.selectedItems1;
    for (var i:String in items1) {
     myText+=items1[i].label+' ';
    }
    
   }
  ]]>
 </fx:Script>
 <s:Panel width="100%" height="100%">
  <s:VGroup width="100%" height="100%">
   <s:Label text="Remote data" fontWeight="bold"/>
   <arcadiocarballares:ComboCheck id="myCombo2" dataProvider="{items1}" labelField="label" width="120"
             addItem="onAddItem2()" />
   <mx:Spacer height="50%"/>
  
  <s:Label id="ext" text="{myText}" />
  </s:VGroup>
 </s:Panel>
</s:Application>
/*
 * ComboCheck
 * v1.2.3
 * Arcadio Carballares Martín, 2009
 * http://www.carballares.es/arcadio
 */
package com.arcadiocarballares {
    import flash.events.Event;
   
    import mx.collections.ArrayCollection;
    import mx.controls.ComboBox;
    import mx.core.ClassFactory;
    import mx.events.CollectionEvent;
    import mx.events.FlexEvent;
   
    [Event(name="addItem", type="flash.events.Event")]
    [Event(name="itemsCreated", type="flash.events.Event")]
   
    public class ComboCheck extends ComboBox {
        private var _selectedItems:ArrayCollection;
       
        [Bindable("change")]
        [Bindable("valueCommit")]
        [Bindable("collectionChange")]
        public function set selectedItems1(value:ArrayCollection):void {
            _selectedItems=value;
        }
       
        public function get selectedItems1():ArrayCollection {
            return _selectedItems;
        }
       
        public function ComboCheck() {
            super();
            addEventListener("comboChecked", onComboChecked);
            addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
            addEventListener(Event.CLOSE, onDropDownInit);
   if(_selectedItems)trace("ComboCheck="+_selectedItems.length);
        }
       
        private function onCreationComplete(event:Event):void {
            dropdown.addEventListener(FlexEvent.CREATION_COMPLETE, onDropDownComplete);
        }
       
        override protected function commitProperties():void {
         super.commitProperties();
   /*if(_selectedItems)trace("commitProperties="+_selectedItems.length);*/
   var render:ClassFactory = new ClassFactory(ComboCheckItemRenderer);
            super.itemRenderer=render;
            var myDropDownFactory:ClassFactory = new ClassFactory(ComboCheckDropDownFactory);
            super.dropdownFactory=myDropDownFactory;
           
            selectedItems1=new ArrayCollection();
         for each (var item:Object in dataProvider) {
    var index:int=selectedItems1.getItemIndex(item);
             if (item.assigned==true) {
                 if (index==-1) {
                     selectedItems1.addItem(item);
                 }
             } else {
                 if (index!=-1) {
                     selectedItems1.removeItemAt(index);
                 }
             }
         }
         
         setText()

         dispatchEvent(new Event("itemsCreated"));
         trace ("commit properties!");
        }
       
        private function onDropDownInit(event:Event):void {
            invalidateProperties();//commitProperties();
        }
       
        private function onDropDownComplete(event:Event):void {
            trace ("dropdown complete!");
        }
       
        private function onComboChecked(event:ComboCheckEvent):void {
   trace("onComboChecked");
            var obj:Object=event.obj;
            var index:int=selectedItems1.getItemIndex(obj);
            if (index==-1) {
                selectedItems1.addItem(obj);
            } else {
                selectedItems1.removeItemAt(index);
            }
           
            setText();
           
            dispatchEvent(new Event("valueCommit"));
            dispatchEvent(new Event("addItem"));
        }
       
        private function setText():void {
         if (selectedItems1.length>1) {
                textInput.text='multiple'
            }
            if (selectedItems1.length==1) {
                textInput.text=selectedItems1.getItemAt(0)[labelField];
            }
            if (selectedItems1.length<1) {
                textInput.text='';
            }
        }
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
利用AMF数据封装与Flash 进行Socket通讯 - 精致-简洁-唯美 - JavaEye技术网站
Linux ftrace(目录)
as3与jsp/servlet通信
as3 一个完整的音乐播放 类
使用AS3帧代码控制动画
Arduino与Flash间的互动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服