Ah found the problem. Instead of using the dataField attribute for the column, you are supposed to use the labelFunction="calcPortCountry" attribute.
That was my problem. So in short I still have to create the calcPortFunction, pass in the item in the grid, find the embedded port attribute and return it as a string. Then on the gridColumn, you must set the labelFunction attribute, not the dataField attribute. This fixes it. --- In [email protected], "laidezmon" <[EMAIL PROTECTED]> wrote: > > OK here is what i am trying to do. > > I have a grid component, and I wanted to display on the grid, a list > of ship objects. Think of this like a cruise liner. > > I am retrieving these objects from a java/hybernate/spring adapter > using remote object, and it works ok. I get back an arrayCollection, > then I build a new array, populatate it with Actionscript ship > objects, which has an embedded port object. > > Ship has attributes like Name, id, comments etc. And it has an > embedded homeport object also. > > The port, has name, country and comments too. > > I can get the object to come back, and its being built correctly. I > have ship objects and each one has its own port object, I see in the > debugger the objects and thier embedded objects and the embedded > object values. So I know the constructor is working fine. Here is the > problem. > > I set the dataprovider attribute to match the array of completed > ships, and I can get the grid, to display all the ship data, but not > the port data. > > So Here is my code: > > <mx:DataGrid id="ShipListDataGrid" width="978" height="190" > dataProvider="{initDG}" creationComplete="loadAllShips()" > selectedIndex="0" > > <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" dataField="port.country" /> > </mx:columns> > </mx:DataGrid> > > Now the colums name, clazz, comments all work perfectly, as they are > attributes of ship. However, port.country does not work, it just shows > a blank column, even though that is the correct notation to get to > that data field, for the attribute of that ships port home country. > Its just a string, so for the port called miami, the country is "USA". > This does not display. > > However if I remove port.country, and only put in port, then it shows > that whats in that column displays as Object : Port. > > So it seems that the grid knows theres an object in there. But not > what to do with it? > > I have created a masterViewList and a masterDetails component, and the > viewList is the grid, and the details is the details section of the > ship. So there it shows a form, and the form shows all the details of > the ship selected in the list above. Heres the interesting thing. > using a label field, I can change the selected list item on the grid, > and show the ship.port.country in a label on the bottom, so it can > transverse the ship object, but just not seemingly in the grid. > > What can I do? Why does it work with a label field, and not in the > grid? Why will the grid not show an embedded string attribute for an > embedded object, but a label or text box will? What am I doing wrong? > > > At the prompting of someone from the Flex Developer forums on adobes > site, I implemented this also. > > On the column I put this as the datafield: (instead of the above > port.country, or port) > > <mx:DataGridColumn headerText="Port Country" > dataField="{calcPortCountry}" /> > > > And created this function: > > private function calcPortCountry(item:Object, col:DataGridColumn):String > { > return item.port.country; > } > > But this also gets me the same result. Nothing inside the grid column. > All the tutorials seem to be for passing simple objects which only > contain simple attributes, strings ints, and stuff like that. Nothing > with embedded objects. This is a ship object, which has an embedded > port object inside it. I have tried debugging this new function, and I > cannot even get into the function above to see whats being passed. > -- 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/

