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.