2011-10-13 12 views

Odpowiedz

4

Dobre pytanie, miałem wygląd poprzez kod źródłowy, a jednocześnie nie ma nic wewnątrz wtyczki RowEditing w klasie rozciąga „RowEditor.js” jest następujące:

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

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

więc jestem d zakładamy, że po prostu trzeba zastąpić 'saveBtnText' w swoim wystąpieniu 'Ext.grid.plugin.RowEditing' gdyż wywołuje konstruktor nadrzędnej z callParent (argumenty) w klasie

+0

to jest niesamowite – Faradox

4

nie jest takie łatwe i nie bez włamania w obszarach nieudokumentowanych RowEditing. Problem polega na tym, że Ext.grid.plugin.RowEditing bezpośrednio tworzy instancję Ext.grid.RowEditor, nie pozwalając na przekazywanie opcji konfiguracyjnych. Tak w ogóle trzeba zastąpić metodę we wtyczce initEditor() i instancję własnego edytora rzędu:

// ... 
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

czy sprawdziłeś kod? Metoda startEdit() daje błąd! "Niezdefiniowany nagłówek". Z drugiej strony powyższy kod działa dobrze do edycji. Aby rozwiązać problem, zainicjuj wtyczkę na initComponent, a nie przez leniwy ładowanie. –

+0

Możesz mieć rację. Nie próbowałem kodu z włączonym automatycznym ładowaniem. –

3

Dla ExtJS 4

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

To rozwiązanie jest zdefiniowanie prototyp rowEditors. oznacza to, że ta konfiguracja jest ogólna. Jeśli chcesz go zmienić tylko dla jednego edytora lub jeśli chcesz uzyskać różne konfiguracje, prototyp zdecydowanie nie jest rozwiązaniem.

spojrzenie na kodzie źródłowym:

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

ta metoda inits na rowEditor, a tam pętla na 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]; 
     } 
    } 

W tym ciągu pętli foreach w btnArray jest przeszukiwany, jeśli istnieje w cfg z tą samą właściwością łańcucha, jeśli jest znaleziony, jest dodany do config. Po prostu trzeba zarządzać, że ta pętla znajdzie co chcesz zmodyfikować:

Przykład: chcemy zmienić tekst przycisku zapisać:

własnością saveBtnText który jest pierwszą pozycją btns tablicy musi istnieje w cfg :

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

to wyszukiwanie czy właściwość istnieje: if (Ext.isDefined(me[item]))

jeśli saveBtnText już istnieje we właściwościach rowEditor następnie:

cfg[item] = me[item]; 

i zostanie ustawiona dodatkowa właściwość config !!

Powiązane problemy