ExtJS4 - Как добавить редактор загрузки файлов в Grid? - PullRequest
3 голосов
/ 31 января 2012

Я хочу создать сетку с 3 столбцами.Один столбец - это «текстовое поле», а два других столбца - это изображение, которое я назначил редактору как «файловое поле».В столбце изображения я могу отобразить изображение с помощью рендерера, но когда дело доходит до редактирования или добавления нового изображения, я не могу нажать кнопку обзора, чтобы просмотреть изображение.Вот мой код.

var grid = Ext.create('Ext.grid.Panel', {
    title: 'Author',
    store: Ext.data.StoreManager.lookup('authorStore'),
    renderTo: 'authorGrid',
    columns: [{
        header: 'Name',
        dataIndex: 'name',
        editor: {
            xtype: 'textfield',
        }
    }, {
        header: 'Icon',
        dataIndex: 'iconImage',
        renderer: function(val) {
            return '<img src="' + val + '">';
        },
        editor: {
            xtype: 'filefield',
            allowBlank: false,
        }
    }, {
        header: 'Background',
        dataIndex: 'background',
        renderer: function(val) {
            return '<img src="' + val + '">';
        },
        editor: {
            xtype: 'filefield',
            allowBlank: false,
        }
    }],
    selModel: Ext.create('Ext.selection.CheckboxModel'),
    plugins: [
        Ext.create('Ext.grid.plugin.CellEditing', {
            clicksToEdit: 2
        })
    ],
    tbar: [{
        iconCls: 'icon-add',
        text: 'Add',
        handler: function() {
            // add record
        }
    }, {
        iconCls: 'icon-delete',
        text: 'Remove',
        handler: function() {
            // remove selected records...
        }
    }, {
        iconCls: 'icon-save',
        text: 'Save',
        handler: function() {
            store.save();
        }
    }]
});

Что это не так?Могу ли я поставить редактор 'filefield' следующим образом?Можно ли нажать кнопку «Сохранить» на сетке для сохранения данных сетки и загрузки изображений?

1 Ответ

3 голосов
/ 01 февраля 2012

После быстрого изучения я не нашел простых решений этой проблемы. На мой взгляд, EditorGrid не должен поддерживать такой тип операций. И более того - редактор в сетке предназначен для изменения значения в соответствующей строке магазина. С fileupload вы работаете с файлами, но, как я вижу в вашем коде, вы ждете строковых данных в этих ячейках.

Я предлагаю заменить загрузку файла в ячейках на всплывающее окно. Когда пользователь щелкает ячейку, вы открываете всплывающее окно с файлом загрузки. Когда они выбирают файл и загружают его - вы закрываете всплывающее окно и перезагружаете запись в хранилище сетки. Просто идея!

...