ExtJS 4>行编辑器网格>如何更改“更新”按钮文本

时间:2011-10-13 07:04:56

标签: extjs extjs4

有没有办法更改ExtJS-4行编辑器网格中“更新”按钮的文本?

4 个答案:

答案 0 :(得分:4)

好问题,我查看了源代码,虽然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',因为它在RowEditing类<中调用带有callParent(arguments)的父构造函数/ p>

答案 1 :(得分:4)

并非如此简单,也不是没有在无证件领域进行黑客攻击。问题是,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' // <<---
        });
    },
}],
// ...

答案 2 :(得分:3)

对于ExtJS 4

Ext.grid.RowEditor.prototype.cancelBtnText = "This is cancel";
Ext.grid.RowEditor.prototype.saveBtnText = "This is update";

答案 3 :(得分:0)

此解决方案是定义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;
}`

这个方法在rowEditor中,并且在btns数组上有一个循环:

btns数组:

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

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

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

在btnArray中的这个循环foreach字符串中,如果在cfg中存在相同的字符串属性,则会搜索它,如果发现它已添加到config中。您只需要管理此循环找到您要修改的内容:

示例:我们要更改保存按钮的文本:

属性saveBtnText是btns数组的第一项必须存在于cfg中:

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

此搜索是否存在属性:if (Ext.isDefined(me[item]))

如果saveBtnText已经存在于rowEditor属性中,那么:

cfg[item] = me[item];

并将设置其他配置属性!!