ExtJS 4> Сетка редактора строк> Как изменить текст кнопки «Обновить» - PullRequest
5 голосов
/ 13 октября 2011

Есть ли способ изменить текст кнопки «Обновить» в ExtJS-4 Row Editor Grid?

Ответы [ 4 ]

4 голосов
/ 13 октября 2011

Не так просто и не без взлома в недокументированных областях. Проблема заключается в том, что Ext.grid.plugin.RowEditing напрямую создает экземпляр Ext.grid.RowEditor, не позволяя передавать параметры конфигурации. Поэтому в общем случае вы должны переопределить метод initEditor() в плагине и создать собственный редактор строк:

// ...
plugins: [{
    ptype: 'rowediting',
    clicksToEdit: 2,
    initEditor: function() {
        var me = this,
            grid = me.grid,
            view = me.view,
            headerCt = grid.headerCt;

        return Ext.create('Ext.grid.RowEditor', {
            autoCancel: me.autoCancel,
            errorSummary: me.errorSummary,
            fields: headerCt.getGridColumns(),
            hidden: true,

            // keep a reference..
            editingPlugin: me,
            renderTo: view.el,
            saveBtnText: 'This is my save button text', // <<---
            cancelBtnText: 'This is my cancel button text' // <<---
        });
    },
}],
// ...
4 голосов
/ 13 октября 2011

Хороший вопрос, я просмотрел исходный код, и хотя внутри плагина RowEditing ничего нет, в классе, который расширяет 'RowEditor.js', есть следующее:

Ext.define('Ext.grid.RowEditor', {
    extend: 'Ext.form.Panel',
    requires: [
        'Ext.tip.ToolTip',
        'Ext.util.HashMap',
        'Ext.util.KeyNav'
    ],

    saveBtnText  : 'Update',
    cancelBtnText: 'Cancel',
    ...
});

Итак, яПредполагается, что вам просто нужно переопределить 'saveBtnText' в вашем экземпляре 'Ext.grid.plugin.RowEditing', так как он вызывает родительский конструктор с callParent (arguments) в RowEditing классе

3 голосов
/ 06 июля 2013

для ExtJS 4

Ext.grid.RowEditor.prototype.cancelBtnText = "This is cancel";
Ext.grid.RowEditor.prototype.saveBtnText = "This is update";
0 голосов
/ 20 ноября 2014

Это решение заключается в определении прототипа rowEditors.это означает, что этот конфиг чем общий.Если вы хотите изменить его только для одного редактора, или если вы хотите получить другие конфигурации, прототип определенно не является решением.

посмотрите на исходный код:

initEditorConfig: function(){
        var me       = this,
            grid     = me.grid,
            view     = me.view,
            headerCt = grid.headerCt,
            btns     = ['saveBtnText', 'cancelBtnText', 'errorsText', 'dirtyText'],
            b,
            bLen     = btns.length,
            cfg      = {
                autoCancel: me.autoCancel,
                errorSummary: me.errorSummary,
                fields: headerCt.getGridColumns(),
                hidden: true,
                view: view,
                // keep a reference..
                editingPlugin: me
            },
            item;
    for (b = 0; b < bLen; b++) {
        item = btns[b];

        if (Ext.isDefined(me[item])) {
            cfg[item] = me[item];
        }
    }
    return cfg;
}`

этот методinits rowEditor, и есть цикл в btns Array:

btns Array:

btns = ['saveBtnText', 'cancelBtnText', 'errorsText', 'dirtyText']    

for (b = 0; b < bLen; b++) {
        item = btns[b];

        if (Ext.isDefined(me[item])) {
            cfg[item] = me[item];
        }
    }

В этом цикле foreach строка в btnArray, в которой она ищется, если существует в cfg то же свойство строки,нашел, что это добавлено в конфиг.Вам просто нужно убедиться, что этот цикл находит то, что вы хотите изменить:

Пример: мы хотим изменить текст кнопки сохранения:

свойство saveBtnText, которое является первым элементом массива btnsдолжен существовать в cfg:

if (Ext.isDefined(me[item])) {
 cfg[item] = me[item];
}

этот поиск, если свойство существует: if (Ext.isDefined(me[item]))

, если saveBtnText уже существует в свойствах rowEditor, то:

cfg[item] = me[item];

и дополнительныесвойство config будет установлено !!

...