<?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='';
}
}
}
}
联系客服