[flexcoders] Re: Problems creating/updating DB record with selection from DropDownList

2012-02-06 Thread hermeszfineart


Thanks Scott.

I managed to get things talking ... somewhat before your reply came in. The 
data provider showed the proper data. I did a bit of digging and came up with 
the new code shown below.  Unfortunately with the new code, if I only need to 
update a single field in the DB I must click every DDL and select the value 
otherwise the other fields receive NULL values.
Any suggestions?

Here is the newest code:

fx:Script
![CDATA[
[Bindable]
public var _selectedStatus:String;
[Bindable]
public var _selectedCategory:String;
[Bindable]
public var _selectedStyle:String;

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

// This function use to add or update records in the database
protected function button_clickHandler(event:MouseEvent):void {
originals.inventoryno = inventorynoTextInput.text;
originals.title = titleTextInput.text;
originals.price = priceTextInput.text;
originals.status = _selectedStatus;
originals.category = _selectedCategory;
originals.style = _selectedStyle;
originals.edition = _selectedEdition;
originals.subject = _selectedSubject;
originals.height = _selectedHeight;
originals.width = _selectedWidth;
originals.medium = _selectedMedium;
originals.imagename = imagenameTextInput.text;
originals.description = descriptionTextInput.text;
originals.copyrightdate = copyrightdateDateField.selectedDate;
if (originals.originalid==0){
createOriginalResult.token = artServices.createOriginal(originals);
}
else{
updateOriginalResult.token = artServices.updateOriginal(originals);
}
}   

]]

/fx:Script

// The declarations remain the same as before for each of the lists

// The FormItems DropDownList/ changed as well. one example below:

/s:FormItem
s:FormItem label=Status styleName=formLabel
s:DropDownList id=statusDDL
labelField=status styleName=formContent
skinClass=CustomSkins.CustomDropDownListSkin
dataProvider={statusList}
prompt={originals.status}
change=statusChanged(event)
creationComplete=statusDDL_creationCompleteHandler(event)
symbolColor=#FF borderColor=#c3c3c3
width=157 color=#00/
/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
 




[flexcoders] Re: Problems creating/updating DB record with selection from DropDownList

2012-02-06 Thread hermeszfineart
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;