我有一个带有4列的mx:DataGrid,其中itemRenderer具有以下设置:
的Mx:数据网格:
<mx:DataGrid id="itensPedidoCompraList"
width="100%"
height="120"
dataProvider="{ model.pedidoCompra.itens }"
editable="true"
itemEditEnd="itensPedidoCompraList_itemEditEndHandler(event)">
的Mx:的DataGridColumn:
<mx:DataGridColumn headerText="{resourceManager.getString('cadastroPedidoCompra', 'ident.PercentualDesconto') }"
width="60"
textAlign="right"
rendererIsEditor="true"
editorDataField="data">
<mx:itemRenderer>
<fx:Component>
<mx:Canvas>
<input:NumberInput width="55" number="@{data.percentualDesconto }"/>
</mx:Canvas>
</fx:Component>
</mx:itemRenderer>
用户单击网格线并单击要编辑的列。 在他更改或添加值后,按ENTER键并且必须将焦点移动到同一行中的另一列。 我正在做的方式是转到下面的专栏。
移至右栏的最佳方法是什么?
谢谢
答案 0 :(得分:0)
请注意,在编辑行时,DataGrid具有以下功能:
editorUsesEnterKey
为真)您可以使用DataGridColumn
的{{3}}属性禁用 Enter 键功能。
<mx:DataGridColumn editorUsesEnterKey="false" />
更改行为以使ENTER
将焦点向右/向左移动有点毛茸茸。键击处理在下面的私有方法中完成。此侦听器已添加到DataGrid
的公共方法createItemEditor()
中,并已在destroyItemEditor()
中删除。从理论上讲,您可以覆盖这些方法来改变这种行为。
源mx :: DataGrid(注意标签在关键焦点更改处理程序中处理)
private function editorKeyDownHandler(event:KeyboardEvent):void
{
// ESC just kills the editor, no new data
if (event.keyCode == Keyboard.ESCAPE)
{
endEdit(DataGridEventReason.CANCELLED);
}
else if (event.ctrlKey && event.charCode == 46)
{ // Check for Ctrl-.
endEdit(DataGridEventReason.CANCELLED);
}
else if (event.charCode == Keyboard.ENTER && event.keyCode != 229)
{
// multiline editors can take the enter key.
if (!_editedItemPosition)
return;
if (columns[_editedItemPosition.columnIndex].editorUsesEnterKey)
return;
// Enter edits the item, moves down a row
// The 229 keyCode is for IME compatability. When entering an IME expression,
// the enter key is down, but the keyCode is 229 instead of the enter key code.
// Thanks to Yukari for this little trick...
if (endEdit(DataGridEventReason.NEW_ROW) && !dontEdit)
findNextEnterItemRenderer(event);
}
}