I resolved part of the issue. However, as with many things one resolution reveals aditional issues. Creating a new record works fine. Updating existing records requires making selections for all DropDownLists (DDLs) even if the user is only correcting data in a TextInput box. Otherwise, the fields get populated with NULL values. What did I miss?
The new code is a follows: <fx:Script> <![CDATA[ // Define the variables used within the DDLs [Bindable] public var _selectedStatus:String; [Bindable] public var _selectedCategory:String; [Bindable] public var _selectedStyle:String; // Functions to facilatate selection changes private function statusChanged(e:IndexChangeEvent):void { if ( _selectedStatus == null ) { _selectedStatus = originals.status; } _selectedStatus = statusDDL.selectedItem.status; } protected function categoryChanged(e:IndexChangeEvent):void { if ( _selectedCategory == null ) { _selectedCategory = originals.category; } _selectedCategory = categoryDDL.selectedItem.category; } protected function stylesChanged(event:IndexChangeEvent):void { if ( _selectedStyle == null ) { _selectedStyle = originals.style; } _selectedStyle = styleDDL.selectedItem.style; } ]]> </fx:Script> </s:FormItem> <s:FormItem label="Edition" styleName="formLabel"> <s:DropDownList id="editionDDL" width="157" borderColor="#c3c3c3" change="editionChanged(event)" color="#000000" creationComplete="editionDDL_creationCompleteHandler(event)" labelField="edition" prompt="{originals.edition}" skinClass="CustomSkins.CustomDropDownListSkin" styleName="formContent" symbolColor="#FFFFFF" dataProvider="{editionList}"/> </s:FormItem> --- In flexcoders@yahoogroups.com, Scott Fanetti <scott.fanetti@...> wrote: > > It looks like you are setting the status on the change in the drop down list > but not casting it. Is that your issue? The change handler does not seem > attached - what is triggering it? When you debug it - what are the contents > of the drop down list data provider? > > Sent from my iPhone > > On Feb 5, 2012, at 8:31 AM, "hermeszfineart" <hermeszfineart@...> wrote: > > > I have been trying to migrate certain form fields from <s:TextInput/> to > > <s:DropDownList/> where the DB columns have foreign keys to different > > tables (i.e. Status, Categories, Dimensions) so the user does not need to > > type the values. When I attempt to update the DB record it populates the > > field with "[object Status]". This implementation is primarily for the back > > office management of the application but some of this type of > > functionallity will be used to drive the front end as well in the future. > > > > I know I must be missing something very simple so any help is appreciated. > > > > Here is the applicable code: > > > > <fx:Script> > > > > <![CDATA[ > > > > import mx.binding.utils.BindingUtils; > > > > import mx.collections.IList; > > > > importmx.collections.errors.ItemPendingError; > > > > import mx.controls.Alert; > > > > import mx.events.FlexEvent; > > > > import mx.rpc.AsyncResponder; > > > > import mx.rpc.AsyncToken; > > > > import mx.rpc.Fault; > > > > import mx.rpc.events.FaultEvent; > > > > import mx.rpc.events.ResultEvent; > > > > import spark.events.GridItemEditorEvent; > > > > import spark.events.GridSelectionEvent; > > > > import spark.events.IndexChangeEvent; > > > > import valueObjects.Categories; > > > > import valueObjects.Dimensions; > > > > import valueObjects.Editions; > > > > import valueObjects.Mediums; > > > > import valueObjects.Status; > > > > import valueObjects.Styles; > > > > import valueObjects.Subjects; > > > > [Bindable] private var _selectedStatus:String = "Available" ; > > > > private function statusChanged(event:IndexChangeEvent):void{ > > > > if (event.newIndex == -1) return; > > > > _selectedStatus = statusList.getItemAt(event.newIndex) as String; > > > > } > > > > protected function button_clickHandler(event:MouseEvent):void{ > > > > originals.inventoryno = inventorynoTextInput.text; > > > > originals.title = titleTextInput.text; > > > > originals.price = priceTextInput.text; > > > > originals.status = _selectedStatus; // Original version -- originals.status > > = statusTextInput.text: > > > > originals.category = categoryTextInput.text; > > > > // Output omitted > > > > if (originals.originalid==0){ > > > > createOriginalResult.token = artServices.createOriginal(originals); > > > > } > > > > else{ > > > > updateOriginalResult.token = artServices.updateOriginal(originals); > > > > } > > > > } > > > > ]]> > > > > </fx:Script> > > > > <fx:Declarations> > > > > <s:AsyncListView id="statusList" > > list="{getAllArtStatusResult.lastResult}"/> <!-- DataProvider --> > > > > </fx:Declarations> > > > > <!-- output omitted for brevity --> > > > > <s:FormItem label="Status" styleName="formLabel"> > > > > <s:TextInput id="statusTextInput" styleName="formContent" > > text="{originals.status}"/> <!-- this is one of the fields I am trying to > > replace --> > > > > <s:DropDownList id="dropDownStatusList" > > > > labelField="status" styleName="formContent" > > skinClass="CustomSkins.CustomDropDownListSkin" dataProvider="{statusList}" > > prompt="{originals.status}" > > > > change="{_selectedStatus = dropDownStatusList.selectedItem}" > > creationComplete="dropDownList_creationCompleteHandler(event)" > > > > symbolColor="#FFFFFF" borderColor="#c3c3c3" width="157" color="#000000"> > > > > </s:DropDownList> > > > > </s:FormItem> > > > > >