ljhjay

导航

MutiSelectedComboBox

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox 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:renderers="WarmC.*" xmlns:renderers1="renderers.*"
preinitialize="combobox1_preinitializeHandler(event)"
>

<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.DropdownEvent;
import mx.events.FlexEvent;
import mx.events.ListEvent;

private var _selectItems:ArrayCollection =new ArrayCollection();
[Bindable]
private var labelDisplay:String=new String("");


public function set selectedItems(value:ArrayCollection) : void{
this._selectItems = value;
fireChangePrompt();
}

public function get selectedItems():ArrayCollection{
return this._selectItems;
}

private function onCreateCompleteHandle(event:FlexEvent):void{
dropdown.allowMultipleSelection = true;
/* this.prompt="please select.."; */
}

override public function set dataProvider(value:Object):void
{
super.dataProvider = value;
/* fireChangePrompt(); */
}

public function getSelectItemIndex(value : Object):int {
if (_selectItems != null && value != null) {
var deleteItemLabelFieldValue : String = itemToLabel(value);
var currentItemLabelFieldValue : String = null;
for(var i : int = 0; i < _selectItems.length; i++){
currentItemLabelFieldValue = itemToLabel(_selectItems[i]);
if (deleteItemLabelFieldValue == currentItemLabelFieldValue) {
return i;
}
}
}
return -1;
}

public function fireChangePrompt() : void {
labelDisplay="";
if(selectedItems.length > 0){
for(var i:int=0;i<selectedItems.length-1;i++){
labelDisplay=labelDisplay + itemToLabel(selectedItems[i]) + ","
}
labelDisplay=labelDisplay+itemToLabel(selectedItems[selectedItems.length-1]);
/* this.text=labelDisplay; */
this.selectedIndex;

/* if(this.selectedIndex=-1){
this.text=labelDisplay;
}else{
this.textInput.text=labelDisplay;
}
*/
this.textInput.text=labelDisplay;
}else{
this.selectedIndex = -1;
labelDisplay="please select...";

this.text = labelDisplay;

}
}

protected function combobox1_preinitializeHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
/* this.selectedIndex = -1; */

}

protected function combobox1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub

}

protected function combobox1_closeHandler(event:DropdownEvent):void
{
// TODO Auto-generated method stub

}

override public function set selectedIndex(value:int):void
{
super.selectedIndex=value;


textInput.text = labelDisplay.toString();


/* if (value >= 0)
selectionChanged = true;

implicitSelectedIndex = false;
invalidateDisplayList();

if (textInput && !textChanged && value >= 0)
textInput.text = selectedLabel;
else if (textInput && prompt)
textInput.text = prompt; */

}

]]>
</fx:Script>

<mx:itemRenderer>
<fx:Component>
<renderers1:CheckBoxItemRenderer change="onClickCheckBox(event)">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

override public function set data(value:Object):void
{
super.data = value;
var i:int = outerDocument.getSelectItemIndex(data);
if (i >= 0) {
this.selected=true;
}else{
this.selected=false;
}

}

protected function onClickCheckBox(event:Event):void
{
var i:int = outerDocument.getSelectItemIndex(data);
if (this.selected) {
if (i = -1) {
outerDocument.selectedItems.addItem(data);
}
this.selected=true;
} else {
var i:int = outerDocument.getSelectItemIndex(data);
if (i >= 0) {
outerDocument.selectedItems.removeItemAt(i);
this.selected=false;
}
}
outerDocument.fireChangePrompt();
}
]]>
</fx:Script>
</renderers1:CheckBoxItemRenderer>
</fx:Component>
</mx:itemRenderer>

</mx:ComboBox>

posted on 2012-02-03 00:22  ljhjay  阅读(168)  评论(0编辑  收藏  举报