I have now also, changed the event type from Object to Event, in the cairngormEventDispatcher call. So the code looks like this:
public function updateSelectedShip( event : Event ) : void { selectedShip = event.target.selectedShip; CairngormEventDispatcher.getInstance().dispatchEvent( new CairngormEvent( SELECT_EVENT ) ); } Also I debugged nearly every line of code trying to discern whats going on, and in the event.target I found an attribute called selectedItem, which I did not create. So I dont know if thats being setup somehow automatically or not. If I set in the select event "model.selectedShip = event.target.selectedItem" the thing changes the grids selectedShip shipVO object to what the new selection is. However the MODEL is still not being updated. I dont get it. I can update the workflow state on the model by clicking buttons, I can adjust the various arrays that are being stored on the model, but I cannot set this one shipVO object equal to what is currently selected in the grid. Someone please help!!! --- In flexcoders@yahoogroups.com, "laidezmon" <[EMAIL PROTECTED]> wrote: > > I have looked over the CMORGCHART, CGLOGIN, and CGSTORE examples, and > I guess I am stupid cause I still cannot get model variables to update. > > What I am trying to do is simple. > > I have a grid, that contains an array collection of ship objects. > > I have a shipdetails screen. What I want to do is display the details > of the ship object selected in the ship grid, on the ship details pane. > > The view layout is simple, I have a Vbox, called ShipBody, it > contains, both the ShipGrid, and ShipDetails components. > > On my model, I have an arrayCollection called ships. It is my returned > value from the service I call. The Ship Grid object uses that variable > on model, for its dataprovider. > > On my ShipDetails component I have a variable called shipSelected > which is of type ShipVO, the same type of variable is set on the grid > component of the same object type. Then from the details component > each of the text fields are set to shipSelected.attrbuteName. > > When I call the ShipDetails component from the ShipBody component, I > tell it to set the shipSelected variable to the model.selectedShip. > > However the problem comes in from the grids perspective. I cannot seem > to get the grid to actually change the model.selectedShip attribute. > So if ship number one is intially set on the result handler from the > service, no matter that the change event seems to fire from the > ShipGrid component, it never updates the model. > > Here is the code: > > First the body section which houses both components: > > <mx:Canvas label="Ships" xmlns:mx="http://www.adobe.com/2006/mxml" > xmlns:ships="com.cardinal.flex.cruise.view.cruise.ships.*" > width="100%" height="100%" > > <mx:Script> > <![CDATA[ > import com.cardinal.flex.cruise.model.CruiseModelLocator; > [Bindable] > public var model : CruiseModelLocator = CruiseModelLocator.getInstance(); > ]]> > </mx:Script> > > <mx:VDividedBox x="0" y="0" height="415" width="978"> > <ships:shipGrid id="ShipListDataGrid" > ships="{ model.ships }" > selectedShip="{ model.selectedShip }" > select="model.selectedShip = event.target.selectedShip" /> > <ships:shipDetails shipSelected="{model.selectedShip}" /> > </mx:VDividedBox> > </mx:Canvas> > > > Now the Grid: > > <mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" > width="978" height="190" > creationComplete="getShips()" > dataProvider="{ ships }" > change="updateSelectedShip( event );" > dragEnabled="true" selectedIndex="0"> > > <mx:Metadata> > [Event("select")] > </mx:Metadata> > <mx:Script> > <![CDATA[ > import mx.controls.dataGridClasses.DataGridColumn; > import com.cardinal.flex.cruise.vo.ShipVO; > import mx.collections.*; > import com.cardinal.flex.cruise.event.GetShipsEvent; > import com.adobe.cairngorm.control.CairngormEventDispatcher; > import com.adobe.cairngorm.control.CairngormEvent; > import com.cardinal.flex.cruise.model.CruiseModelLocator; > > public static var SELECT_EVENT : String = "select"; > > [Bindable] > public var model : CruiseModelLocator = CruiseModelLocator.getInstance(); > > [Bindable] > public var ships : ArrayCollection; > > [Bindable] > public var selectedShip : ShipVO; > > > public function getShips():void > { > var event : GetShipsEvent = new > GetShipsEvent(GetShipsEvent.EVENT_FIND_SHIPS); > CairngormEventDispatcher.getInstance().dispatchEvent( event ); > } > > private function calcPortCountry(item:Object, col:DataGridColumn) : > String > { > return item.port.country; > } > > public function updateSelectedShip( event : Object ) : void > { > selectedShip = event.target.selectedShip; > CairngormEventDispatcher.getInstance().dispatchEvent( new > CairngormEvent( SELECT_EVENT ) ); > } > ]]> > </mx:Script> > <mx:columns> > <mx:DataGridColumn headerText="Name" dataField="name"/> > <mx:DataGridColumn headerText="Class" dataField="clazz"/> > <mx:DataGridColumn headerText="Comments" dataField="comments"/> > <mx:DataGridColumn headerText="Port Country" > labelFunction="calcPortCountry" /> > </mx:columns> > </mx:DataGrid> > > > And here is the details component: > > <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" > width="978" height="227"> > <mx:Script> > <![CDATA[ > import com.cardinal.flex.cruise.vo.ShipVO; > > [Bindable] > public var shipSelected : ShipVO; > ]]> > </mx:Script> > > <mx:Image > source="@Embed(source='../../../../../../../assets/empressboat/empress.boatphoto.jpg')" > autoLoad="true" x="10" y="10"/> > <mx:Image > source="@Embed(source='../../../../../../../assets/grandeurboat/gr.bigroom.photo.jpg')" > autoLoad="true" height="147" width="224" right="10" top="7"/> > <mx:Label x="197" y="10" text="{shipSelected.name}" fontWeight="bold" > fontSize="15" color="#359DDA"/> > <mx:Label x="197" y="94" text="Ammenities:" fontWeight="bold"/> > <mx:Label x="197" y="111" width="281" height="56" > text="{shipSelected.comments}"/> > <mx:Label x="502" y="5" text="{shipSelected.name} Featured Room:" > fontSize="15" fontWeight="bold" color="#359DDA"/> > <mx:Label x="502" y="26" text="Name: Big Nice Comfy Room" > fontWeight="bold"/> > <mx:Label x="502" y="43" text="Cost Per Night: $1500.00" > fontWeight="bold"/> > <mx:Label x="502" y="60" text="Num of Beds: 1" fontWeight="bold"/> > <mx:Label x="502" y="77" text="Num of Baths: 1" fontWeight="bold"/> > <mx:Label x="502" y="94" text="Ammenities:" fontWeight="bold"/> > <mx:Label x="502" y="111" text="Personal Ocean Deck View bay window." > width="214"/> > <mx:Label x="373" y="10" id="port"/> > <mx:Label x="197" y="36" text="Class:"/> > <mx:Label x="240" y="36" text="{shipSelected.clazz}"/> > <mx:Label x="197" y="60" text="Home Port Name:"/> > <mx:Label x="307" y="60" text="{shipSelected.port.name}"/> > <mx:Label x="200" y="77" text="Home Port Country:"/> > <mx:Label x="326" y="77" text="{shipSelected.port.country}"/> > </mx:Panel> > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/flexcoders/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/