读书人

含有checkBox的ComBoBox

发布时间: 2012-10-29 10:03:53 作者: rapoo

带有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='';
??????????? }
??????? }
??? }
}

读书人网 >Web前端

热点推荐