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>
> > 
> >
>


Reply via email to