Совет, нужна помощь с ExtJS 4: сетка: редактирование ячеек: функция автоматического редактирования

Я искал вопросы, связанные с 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()
});

16
задан vins 12 August 2011 в 07:34
поделиться