On 27/05/2007, at 21:57, André Rodrigues Pena wrote:

Although when I try to populate de DataGrid, I can't set a
DataGridColumn to display the property "name" within the property
"product" from the data provider. The code is the following:

<mx:DataGrid id="datagrid" dataProvider="{sales}" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="id" headerText="Id"/>
<mx:DataGridColumn dataField="product.name" headerText="Product"/>
<mx:DataGridColumn dataField="customer.name" headerText="Customer"/>
</mx:columns>
</mx:DataGrid>

Only the simple attribute "id" is properly displayed in the DataGrid

Why? What can I do?

.


The way I solved it was by using a custom label function for each column. Instead of specifying a dataField, you define the following function inside a script tag:

function myCustomDataLabelFunction(item:Object, column:DataGridColumn):String
{
        return item.product.name;
}

Then you declare the column like this:

<mx:DataGridColumn labelFunction="myCustomDataLabelFunction" headerText="Product"/>

Basically, your label function gets invoked on each item, when the column needs to know what to display on that row. And you have to return the value you want to be displayed.

I hope this helped,
Andrea.

Reply via email to