2012-09-27 8 views
5

私は、永続的なフィールド(モデルファイルで定義されているフィールド)をプロパティグリッドに表示したいと思います。ExtJS:Ext.grid.property.Gridでモデルを表示

enter image description here

プロパティグリッド:私は(コントローラに)selectイベントにそうような項目を読み込む

Ext.define('ATCOM.view.InspectorProperties', { 
    extend : 'Ext.grid.property.Grid', 
    alias : 'widget.inspectorProperties', 
    cls : 'property-grid', 
    height : 150, 
    listeners : { 
     beforerender : function() { 
      // Rename the first column 
      var cols = this.getView().getHeaderCt().getGridColumns(); 
      cols[0].setText("Property"); 
     }, 
     beforeedit : function(e) { 
      // Read-only 
      return false; 
     } 
    }, 
    source : {} // Start with no items 
}); 

は、レコードは我々のモデルオブジェクトとGETINFO()であるプロパティグリッドであります:

var source = {}; 
source.id = record.get('id'); 
source.start = record.get('start'); 
source.end = record.get('end'); 

this.getInfo().setSource(source); 

モデル:

Ext.define('ATCOM.model.Shift', { 
    extend : 'Ext.data.Model', 
    fields : [ 'id', { 
     name : 'start', 
     type : 'date', 
    }, { 
     name : 'end', 
     type : 'date', 
    }, 'position', 'controller' ], 
    hasMany : { 
     model : 'ATCOM.model.ShiftAlloc', 
     name : 'allocations' 
    } 
}); 

は(私の場合はallocationsを除く)ので、すべての非結合フィールドは自動的にプロパティグリッドに送られ、これについて移動する良い方法はありますか? ATCOM.model.Shift.getFields()のフィールドを読み込み、残りのキーを保持するためにpersistent:false;のチェックを繰り返すこともできますが、インスタンスからクラス参照を取得するにはどうすればよいのですか。ATCOM.model.Shiftをインスタンスのどれかから取得するにはどうすればよいですか?私はgetFields()を呼び出すことができますか?

EDIT:

クラス名を見つけるために:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Base-static-method-getName

+0

+1の名前を変更する方法とその読み方を示すコードただ...素敵! – HDave

+0

歓声、それは見つけるためにいくつかの掘りを取る:\ –

答えて

1

それはsetSource(record.dataを)言って動作する可能性があります。私は今これで遊んでいます。適切な情報が表示されるようですが、編集可能なフィールドの詳細を制御できなくなる場合があります。

+0

ええ、唯一の問題は、それがCSSクラス、親IDなどの 'data'で必要とされるより多くの情報を表示するかもしれないということです。 –

関連する問題