Всем доброго времени суток.
Есть необходимость сделать табличку, данные в которой можно редактировать - измененные данные должны сразу же отображаться в других компонентах формы. Поведение примера, приведенного в справке по flex, немного удивило:

Код AS3:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
[Bindable]
private var myDP:ArrayCollection = new ArrayCollection([
{label1:"Order #2314", quant:3, Sent:true},
{label1:"Order #2315", quant:3, Sent:false}
]);
private function eventItemEditEnd(e:DataGridEvent):void
{
trace(e.dataField, e.rowIndex, e.columnIndex);
trace(myDP[e.rowIndex][e.dataField]);
trace(myDG.selectedItem.quant);
}
]]>
</mx:Script>
<mx:DataGrid id="myDG" dataProvider="{myDP}"
variableRowHeight="true"
editable="true"
itemEditEnd="eventItemEditEnd(event)">
<mx:columns>
<mx:DataGridColumn dataField="label1" headerText="Order #"/>
<mx:DataGridColumn dataField="quant" headerText="Qty"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
событие itemEditEnd отдает мне те же данные, что были в начале редактирования, т.е. логика работы событий itemEditBegin и itemEditEnd мне не понятна (, можно как-то получить новые, обновленные данные, введенные пользователем? Спасибо
Добавлено через 40 часов 7 минут
Попробовал решить проблему следующим образом:
написал свой itemEditor:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml"
focusOut="eventFocusOut(event)">
<mx:Script>
<![CDATA[
public static const ITEM_PROP_CHANGED:String = "itemPropChanged"; // пользователь изменил данные в таблице свойств
protected function eventFocusOut(e:FocusEvent):void
{
//ObjectPropertiesSet.SELECTED_ITEM_DATA = text;
dispatchEvent(new Event(TextGridEdit.ITEM_PROP_CHANGED, true));
}
]]>
</mx:Script>
</mx:TextInput>
в котором подписался на событие потери фокуса к текстовому полю: в этом событии я выбрасываю свое событие о том, что данные изменились, в основном приложении:

Код AS3:
<?xml version="1.0"?>
<!-- itemRenderers\inline\InlineNumStepper.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
[Bindable]
private var myDP:ArrayCollection = new ArrayCollection([
{label1:"Order #2314", quant:3, Sent:true},
{label1:"Order #2315", quant:3, Sent:false}
]);
private function eventCreationComplete(e:Event):void
{
myDG.addEventListener(TextGridEdit.ITEM_PROP_CHANGED, eventPropChanged);
}
private function eventItemEditEnd(e:DataGridEvent):void
{
trace(e.dataField, e.rowIndex, e.columnIndex);
trace(myDP[e.rowIndex][e.dataField]);
trace(myDG.selectedItem.quant);
}
private function eventPropChanged(e:Event):void
{
trace("dispatch catch = " + e);
}
]]>
</mx:Script>
<mx:DataGrid id="myDG" dataProvider="{myDP}"
variableRowHeight="true"
editable="true"
itemEditEnd="eventItemEditEnd(event)"
creationComplete="eventCreationComplete(event)">
<mx:columns>
<mx:DataGridColumn dataField="label1" headerText="Order #"/>
<mx:DataGridColumn dataField="quant" headerText="Qty" editorDataField="text" itemEditor="TextGridEdit"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
на creationComplete вешаю слушатель - но события от своего itemEditor'а, но эти события никогда не приходят в основное приложение
