有没有办法更改ExtJS-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];
并将设置其他配置属性!!