Я искал вопросы, связанные с ExtJS, и не нашел ни одной ссылки, но если я пропустил это, заранее извините за создание повторяющегося вопроса.
Я хотел бы попросить помощи о том, как сделать сетку ExtJS 4: редактирование ячеек: функция автоматического редактирования - я имею в виду, что я хочу войти в режим редактирования ячейки, когда я нажимаю клавишу (например, нажав «123» в выделенная ячейка, текст заменяется (если есть) на «123»). В настоящий момент войти в режим редактирования ячеек можно, нажав ENTER или щелкнув мышью.
В качестве основы я использую пример, предоставленный Sencha: http://dev.sencha.com/deploy/ext-4.0.2a /examples/grid/cell-editing.html
Любые советы, указатели будут признательны.
Заранее спасибо! :)
Собственно проблему я решил частично. Нашел способ сделать ячейку редактируемой при нажатии клавиши, поместил параметр конфигурации selectOnFocus для выделения текста в ячейке, теперь мне нужно вставить первый символ (который инициировал режим редактирования) в ячейку.
Это может быть не самое красивое решение, но оно работа у меня :) Вот полный код на текущий момент.
var tStore = Ext.create('Ext.data.Store', {
storeId:'simpsonsStore',
fields:['name', 'email', 'phone'],
data:{'items':[
{"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},
{"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"},
{"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},
{"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}
]},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
var tCellEdit = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
var tGrid = Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: tStore,
columns: [
{header: 'Name', dataIndex: 'name', field: 'textfield'},
{header: 'Email', dataIndex: 'email', flex:1,
editor: {
xtype:'textfield',
allowBlank:false,
selectOnFocus: true
}
},
{header: 'Phone', dataIndex: 'phone'}
],
selType: 'cellmodel',
plugins: [tCellEdit],
listeners: {
keypress: {
element: 'el',
fn: function(iEvent, iElement) {
iCode = iEvent.getKey();
if (iCode != undefined && iCode != iEvent.LEFT && iCode != iEvent.RIGHT && iCode != iEvent.UP && iCode != iEvent.DOWN && iCode != iEvent.ENTER && iCode != iEvent.ESC) {
var iView = tGrid.getView();
var position = iView.selModel.position;
tCellEdit.startEditByPosition(position);
}
}
}
},
height: 200,
width: 400,
renderTo: Ext.getBody()
});