使用 ExtJS 4 我想创建一个网格,用户将在其中输入一长串数字。我希望用户能够通过按“Enter”完成对一个单元格的编辑,然后自动移动到下面的单元格并开始编辑。
Ext.grid.plugin.CellEditing 似乎可以很好地用于编辑,但我找不到检测和处理 keyUp 事件的方法。
我尝试使用带有以下代码的“编辑”事件来解决这个问题:
selType: 'cellmodel',
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners: {
edit: function (editor, e, eOpts) {
// If the event is fired by pressing "Enter", the column and row associated with event will
// be the same as the currently selected row and column
if (e.grid.selModel.position.column == e.colIdx && e.grid.selModel.position.row == e.rowIdx){
// Check if we are in the final row
if (e.rowIdx+1 == e.grid.getStore().getTotalCount()){
return true;
}
editor.startEditByPosition({row: e.rowIdx+1, column: e.colIdx});
return false;
}
}
}
})
],
这种方法的问题在于,如果用户开始编辑单元格,然后单击 Grid 外部的 GUI 元素,则编辑事件无法将其与按下的“Enter”键区分开来。这可以解决吗?
也许我应该尝试实现自定义 SelectionModel ?如何开始使用这种方法?