Modified version of Zoids custom combo box to allow preselected value
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.
Comments
It does the same thing, except it does it by adding 1 new property "valueField" to know which property of the dataprovider 'objects' to compare against. And it sets the data value by overriding the selectedItem property.
It does the same thing, except it does it by adding 1 new property "valueField" to know which property of the dataprovider 'objects' to compare against. And it sets the data value by overriding the selectedItem property.
i have problem regarding showing checkboxes in custom combobox in order to do multiselect functionality.
can u please help me ?
thanks in advance.
I have several cases where I need to pre-select default items in a dataGrid.
default items come from my CFC. For example, mydefaults.dataProvider is a query containing CategoryID, Category.
mydataGrid.dataProvider also contains CategoryID and Category.
Seems like I'd need to do a nested loop comparing the mydataGrid.dataProvider[i].categoryID to defaults.dataProvider[j].categoryID? or is there an easier way?
I love Flex! But...ColdFusion sure did make life easier with CFSELECT!
Don

