2011-10-13 7 views

答えて

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

だから私は」あなたはちょうどそれがcallParent(引数)を持つ親のコンストラクタを呼び出すようRowEditingクラス

+0

これは素晴らしいです – Faradox

4

ないことは容易ではなく文書化されていない地域でハッキングなしで'Ext.grid.plugin.RowEditing'のインスタンスで'saveBtnText'をオーバーライドする必要があると思い仮定dが。問題は、Ext.grid.plugin.RowEditingExt.grid.RowEditorを直接インスタンス化するということです。設定オプションを渡すことはできません。 ExtJSの4

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

あなたのコードをチェックしましたか? startEdit()メソッドはエラーを返します。 "Undefined headerCt"。一方、上記のコードは編集にはうまくいきます。問題を解決するには、遅延ロードではなく、initComponentでプラグインを初期化します。 –

+0

あなたは正しいかもしれません。自動ロードを有効にしてコードを試しませんでした。 –

3

:だから、一般的に、あなたは、プラグインでinitEditor()メソッドをオーバーライドして、独自の行エディタをインスタンス化する必要があります。これは、この設定が一般的なものであることを意味します。 1人のエディターでのみ変更したい場合や、異なる設定を取得する場合は、プロトタイプは解決策ではありません。 rowEditorのINIT

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

この方法、及びbtnsアレイ上のループがあります:

ソースコードを見

btns配列:でこのループforeachの列で

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

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

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

btnArray cfgに同じ文字列プロパティが存在するかどうかを検索します(設定に追加されている場合)。

例:私たちは、ボタンを救うのテキストを変更する:あなたはこのループは、変更したいものを見つけたことを管理する必要が

btns配列の最初の項目は、CFG内に存在しなければならないという性質saveBtnText :

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

この検索プロパティが存在する場合:if (Ext.isDefined(me[item]))

をsaveBtnTextが既にrowEditorのプロパティに存在する場合:

cfg[item] = me[item]; 

追加の設定プロパティが設定されます。

0

このソリューションはrowEditorsのプロトタイプを定義することであるため

// ... 
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' // <<--- 
     }); 
    }, 
}], 
// ... 
関連する問題