私のフレックスアプリケーションでは、5列のデータグリッドを使用しています...そのうち3つは編集可能です...グリッドにアイテムを追加すると、Enterキーを押すと、カーソル位置がグリッド内でDatagridセルの右から左に移動します..より多くのアイテムを繰り返すことで...それは機能します....20個のアイテムを追加した後、カーソルは...編集可能なセルを垂直に移動します...つまり、Enterキーを押すと上から下に移動します...解決方法これ??
グリッドの私のコードはこちら
<mx:AdvancedDataGrid id="Do" dataProvider="{GrdPrvider}" keyDown="Do_keyDownHandler(event)"
headerHeight="22" resizeEffect="resize" editable="true" sortExpertMode="true" lockedColumnCount="3" horizontalScrollPolicy="auto" verticalScrollPolicy="auto" width="95%" height="160" x="0" y="10"><mx:columns>
<mx:AdvancedDataGridColumn headerText="#" editable="false" width="40" dataField="SerialNo" sortCompareFunction="SiNoCompare" />
<mx:AdvancedDataGridColumn headerText="Desc" editable="false" labelFunction="dgLableFunction" sortCompareFunction="sortableDesc" width="250"/>
<mx:AdvancedDataGridColumn headerText="Fos" sortable="false" editable="true" width="40"> <mx:AdvancedDataGridColumn headerText="gos" sortable="false" editable="true" width="40">
キーダウンイベントの場合、以下のように機能します..
protected function Do_keyDownHandler(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
{
if(Do.columns[colIdx].editable && event.currentTarget.selectedIndex <= Do.columnCount)
{
var cols:ArrayCollection = new ArrayCollection(Do.columns);
var nxtGet:Boolean = false;
for(var i:String in cols)
{
if((int(i) > colIdx) && Do.columns[i].editable && (!nxtGet))
{
colIdx = int(i);
nxtGet = true;
}
}
if(nxtGet)
{
Do.editedItemPosition ={rowIndex: event.currentTarget.selectedIndex, columnIndex: colIdx};
event.preventDefault();
Do.dataProvider.refresh();
}
else
{
for(var r:String in Do.columns)
{
if(Do.columns[r].headerText == "Fos")
{
colIdx = parseInt(r);
}
}
Do.editedItemPosition ={rowIndex: event.currentTarget.selectedIndex+1, columnIndex: colIdx};
event.preventDefault();
Do.dataProvider.refresh();
}
}
}
}