Wow that title sounds complex. If you don't remember, a few hours ago I blogged about an article that Boyzoid wrote about how easy it was to do a custom component in Flex 2. His example added a new method to ComboBox, selectedItemByValue.

What if you wanted to set the selected item when the component is created? I made these modifications to Zoid's code:

<?xml version="1.0" encoding="utf-8"?> <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="checkSelected()">

<mx:Script> <![CDATA[ [Bindable] public var defaultSelectedValue:int;

public function selectedItemByValue(val:int):void{ for (var i:int=0;i<this.dataProvider.length;i++){ var item:int = this.dataProvider[i].data;

	if(item == val){
		this.selectedIndex = i;
		break;
	} else{ this.selectedIndex = 0;}
}

}

private function checkSelected():void { selectedItemByValue(defaultSelectedValue); } ]]> </mx:Script>

</mx:ComboBox>

Note first the use of creationComplete in the top tag. That just means - run checkSelected() when done. I then created a new public variable named defaultSelectedValue. My checkSelected function simply then calls the function Boyzoid had written. This then lets me do the following in the calling code:

<comp:customComboBox dataProvider="{comboData}" id="myCombo2" defaultSelectedValue="2" /> <comp:customComboBox dataProvider="{comboData}" id="myCombo3" defaultSelectedValue="3" /> <comp:customComboBox dataProvider="{comboData}" id="myCombo4" />

Not sure if this is best practice or not - and I did guess at a few things, but I thought I'd share.