Here's the code for the Adobe BindableComboBox.mxml that's generated by the ColdFusion Application Wizard. This will do what you want.
<?xml version="1.0" encoding="utf-8"?> <!-- ////////////////////////////////////////////////////////////////////////\ //////// // // Copyright (C) 2003-2006 Adobe Macromedia Software LLC and its licensors. // All Rights Reserved. The following is Source Code and is subject to all // restrictions on such code as contained in the End User License Agreement // accompanying this product. If you have received this file from a source // other than Adobe, then your use, modification, or distribution of this file // requires the prior written permission of Adobe. // // @author Dean Harmon // @author Mike Nimer ////////////////////////////////////////////////////////////////////////\ //////// --> <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " xmlns="*" creationComplete="componentInit()"> <mx:Script> <![CDATA[ import mx.utils.ObjectUtil; import mx.controls.Alert; [Bindable] public var valueField:String = ""; [Bindable] public var labelFields:Array = []; public function componentInit():void { this.labelFunction = renderLabelFunction; } public function renderLabelFunction(item:Object):String { var result:String = ""; if (labelFields.length == 0) { if (labelField != null) { return item[labelField]; } else { return item.toString(); } } else { for(var i:int=0; i < labelFields.length; i++) { if (i > 0) { result += " "; } result += item[labelFields[i]]; } } return result; } override public function set selectedItem(val:Object):void { //Alert.show(valueField +":" +ObjectUtil.toString(val)); if (this.valueField != null) { for(var i:int=0; i < this.dataProvider.source.length; i++) { var item:Object = this.dataProvider.source[i]; if (item[valueField] == val) { // if it matches, make it selected. this.selectedIndex = i; break; } } } else { super.selectedItem(val); } } public function get selectedItemValue():Object { if (this.valueField != null && selectedItem != null) { return selectedItem[valueField]; } else { return text; } } ]]> </mx:Script> </mx:ComboBox> ~randy --- In flexcoders@yahoogroups.com, "T" <[EMAIL PROTECTED]> wrote: > > Actually this is a good question, and I am in the same boat and also do > not know the correct way to handle this. > > I have a value object in my data model that came from a table in a > database via a RemoteObject call. The VO has an int field that is a > foreign key reference to a record in the people table. I have a > combobox that gets its list of people from the people table, including > their person_id fields, displays the name field, but I need to bind the > combo item to the person_id int field in the VO. This does not seem to > be possible out of the box, and it looks like flex3 doesn't have it > either. Does this mean I have to manually implement an itemchanged > event handler for changes in the combo box, and manually set the > selected combo item when the value object is first loaded? And even > with this, if the model changes, the view would not see it happen. Is > there some way to make this binding? > > T > > --- In flexcoders@yahoogroups.com, "George Georgiou" george1977@ > wrote: > > > > Hi there, > > > > I got a remoteobject which loads data from an sql table. I got > something > > like 5 fields for customers. > > > > I want to populate a combobox showing the name of the customer and > having > > as a value the customer_id. > > > > After Googling it a bit, I have ended up with this: > > > > <mx:ComboBox id="customer_name" dataProvider="{customerData}" > > labelField="customer_name"/> > > > > this works great! But what about the dataField? (at my suprise I have > found > > out that although a labelField does exist - which is cool, a dataField > > attribute does not exist). > > > > How can I bind the customer_id into my combobox? Any ideas? > > > > thanks, > > George > > >