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 [email protected], "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/