PDA

Просмотр полной версии : Назначение dataProvider для DataGrid с многоуровневой структурой данных


Deidara
05.02.2010, 11:22
Добрый день.
Такой вопрос:
Есть ArrayCollection со следующей структурой данных.

(Object)#0
customerStatus = (Object)#1
customerState = (Object)#2
id = 2
nameState = "Потанциальный клиент"
cutomerStatus = "СЭ"
id = 4
id = 3
info = "фывфывфыв"
mx_internal_uid = "77FB5848-19DC-AD67-348B-9CFC87DD0CB6"
name = "Клиент тест"
phone = "565989"]

То есть внутри объекта хранящегося в коллекции есть ещё один объект.

Пытаюсь отобразить все это дело в DataGrid следующим образом:

<mx:DataGrid click="test()" dataProvider="{CustomerDataModel.getInstace().customerCollection}">
<mx:columns>
<mx:DataGridColumn headerText="Имя клиента" dataField="name"/>
<mx:DataGridColumn headerText="Стасус" dataField="customerStatus.cutomerStatus"/>
<mx:DataGridColumn headerText="Телефон" dataField="phone"/>
<mx:DataGridColumn headerText="Перезвонить" dataField="reCallDate"/>
</mx:columns>
</mx:DataGrid>


Естественно поле cutomerStatus он не видит и не отображает. Есть ли возможность заставить DataGrid читать данные с вложенного объекта, или необходимо менять структуру коллекции?

BeDLiNt
05.02.2010, 15:19
ItemRenderer

Deidara
11.02.2010, 08:08
Извините, а будте добры чуть подробнее.
Я если честно не до конца поминам как он работает.
Если в качестве itemRenderer я назначаю мой ArrayCollection, то свойства customerStatus у него нет.
Приведите пожалуйста пример.

BeDLiNt
11.02.2010, 09:58
Можно обойтись labelFunction для этой колонки:
public function statusLabelFunc(item:Object, column:DataGridColumn):String
{
return item[column.dataField].customerStatus;
}

...

<mx:DataGridColumn headerText="Стасус" dataField="customerStatus" labelFunction="statusLabelFunc"/>

Deidara
11.02.2010, 23:02
Спасибо большое:)