2011-10-13 8 views

cevap

4

İyi soru, ben kaynak koduna bir göz vardı ve sınıfta RowEditing eklentisi içinde bir şey duyulurken, aşağıdaki 'RowEditor.js' olduğunu uzanır:

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

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

Yani ben Eğer sadece callParent (argümanlar) ile ana yapıcısı deyişiyle RowEditing sınıfa

+0

Bu harika – Faradox

4

kolay değil ki değil belgesiz alanlarda hack olmadan 'Ext.grid.plugin.RowEditing' senin örneğinde 'saveBtnText' geçersiz kılmak gerekiyordu varsayalım d. Sorun, Ext.grid.plugin.RowEditing'un konfigürasyon seçeneklerinden geçmenize izin vermeden Ext.grid.RowEditor'u doğrudan başlatmasıdır. ExtJS 4

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

kodunuzu kontrol ediyor musunuz? StartEdit() yöntemi hata veriyor! "Tanımsız headerCt". Diğer taraftan, yukarıdaki kod düzenleme için iyi çalışır. Sorunu çözmek için, eklentiyi initComponent üzerinde başlatın ve tembel yükleme ile değil. –

+0

Haklı olabilirsiniz. Otomatik yükleme etkinken kodu denemedim. –

3

: Yani genel olarak size eklentisinde initEditor() yöntemini geçersiz ve kendi satır editörü örneğini gerekiyor. Bu, bu yapılandırmanın genelden daha fazla olduğu anlamına gelir. Sadece bir editör için değiştirmek isterseniz veya farklı yapılandırmalar almak istiyorsanız, prototip kesinlikle çözüm değildir. Kaynak koduna

görünüm:

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 inits bu yöntem ve btns Array üzerinde bir döngü var:

btns Dizisi: Bu döngü foreach dizesi

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

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

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

yılında btnArray, eğer aynı string özelliğine sahipse, eğer config eklendiyse, aranır.

Örnek: Sadece bu döngü değiştirmek istediğini bulur yönetmek zorunda

btns Array ilk öğedir mülkiyet saveBtnText gerekir cfg var: Biz kaydet düğmesini metnini değiştirmek isteyen :

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

Bu arama özelliği varsa: if (Ext.isDefined(me[item]))

saveBtnText zaten rowEditor özelliklerinde varsa o zaman:

cfg[item] = me[item]; 

ve ek yapılandırma özelliği ayarlanacaktır!

0

Bu çözüm rowEditors prototipini tanımlamaktır için

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