Маркус, это несколько функциональная демоверсия, которая должна помочь вам встать на правильный путь:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
[Bindable]
private var src:Array = [
{ a:1, b:2, c:3 },
{ a:1, b:2, c:3 },
{ a:1, b:2, c:3 }
];
private function init() : void
{
this.systemManager.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDown );
}
private function onKeyDown(e:KeyboardEvent) : void
{
trace (dg1.rowCount, dg1.columnCount);
if (e.target.parent.parent.parent is DataGrid)
var dg:DataGrid = e.target.parent.parent.parent as DataGrid;
if (dg == dg1)
if (dg.editedItemPosition.columnIndex == dg.columnCount - 1)
if (dg.editedItemPosition.rowIndex == (dg.rowCount / 2) - 1)
dg2.setFocus();
}
]]>
</mx:Script>
<mx:VBox>
<mx:DataGrid id="dg1" dataProvider="{src}" tabEnabled="true" editable="true">
<mx:columns>
<mx:DataGridColumn headerText="A" dataField="a" />
<mx:DataGridColumn headerText="B" dataField="b" />
<mx:DataGridColumn headerText="C" dataField="c" />
</mx:columns>
</mx:DataGrid>
<mx:TextInput text="dfalsdfasdf" />
<mx:DataGrid id="dg2" dataProvider="{src}" tabEnabled="true" editable="true">
<mx:columns>
<mx:DataGridColumn headerText="A" dataField="a" />
<mx:DataGridColumn headerText="B" dataField="b" />
<mx:DataGridColumn headerText="C" dataField="c" />
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:Application>
По сути, это две сетки данных с текстовым полем между ними. Если бы вы естественным образом выполняли вкладку из последней редактируемой ячейки первой сетки, она сначала переходила бы в текстовое поле, а затем другое событие вкладки устанавливало бы фокус второй сетки данных.
Я сказал, что это «несколько» функционал, так как я не могу получить точный DataGrid.rowCount (должно быть 3, но по какой-то причине читается 6). Вот почему там есть проверка dg.rowCount / 2.
Надеюсь, это поможет вам продвинуться вперед;)