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=#00
creationComplete=editionDDL_creationCompleteHandler(event)
labelField=edition
prompt={originals.edition}
skinClass=CustomSkins.CustomDropDownListSkin
styleName=formContent symbolColor=#FF
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;