2011-10-13 10 views

risposta

4

Buona domanda, ho avuto uno sguardo attraverso il codice sorgente e mentre non c'è nulla dentro il plugin RowEditing, nella classe si estende 'RowEditor.js' v'è la seguente:

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

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

Così ho' d assume avresti solo bisogno di ignorare il 'saveBtnText' nella vostra istanza di 'Ext.grid.plugin.RowEditing' come si chiama il costruttore genitore con callParent (argomenti) nella classe di RowEditing

+0

questo è fantastico – Faradox

4

non che facile e non senza l'hacking nelle aree non documentate. Il problema è che il Ext.grid.plugin.RowEditing crea un'istanza diretta di Ext.grid.RowEditor senza consentire il passaggio nelle opzioni di configurazione. Quindi, in generale, è necessario eseguire l'override del metodo initEditor() nel plugin e un'istanza per il proprio editor di fila:

// ... 
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' // <<--- 
     }); 
    }, 
}], 
// ... 
+0

hai controllato il tuo codice? Il metodo startEdit() restituisce un errore! "Intestazione non definita". D'altra parte il codice sopra funziona bene per la modifica. Per risolvere il problema, inizializzare il plugin su initComponent e non tramite il caricamento lazy. –

+0

Potresti avere ragione. Non ho provato il codice con il caricamento automatico abilitato. –

3

Per ExtJS 4

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

Questa soluzione è quella di definire il prototipo di rowEditors. ciò significa che questa configurazione è generale. Se vuoi cambiarlo solo per un editor, o se vuoi ottenere configurazioni diverse, il prototipo non è sicuramente la soluzione.

un'occhiata al codice sorgente:

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; 
}` 

questo metodo INIT del rowEditor, e c'è un anello su 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]; 
     } 
    } 

In questa stringa ciclo foreach in btnArray viene cercato se esiste in cfg la stessa proprietà stringa, se viene trovato è aggiunto a config. Devi solo per gestire che questo ciclo trova quello che si desidera modificare:

Esempio: vogliamo cambiare il testo del pulsante di salvataggio:

la proprietà saveBtnText, che è il primo elemento di Btns array deve esiste in CFG :

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

questa ricerca se la proprietà esiste: if (Ext.isDefined(me[item]))

se saveBtnText esiste già nella proprietà rowEditor poi:

cfg[item] = me[item]; 

e la proprietà di configurazione aggiuntiva verrà impostata !!

Problemi correlati