5

プロパティ グリッドに永続フィールド (モデル ファイルで定義されているフィールド) を表示したいと考えています。

ここに画像の説明を入力

プロパティ グリッド:

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

選択イベント (コントローラー内) で次のようにアイテムをロードします。record はモデル オブジェクトで、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.ShiftgetFields()?

編集:

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

4

1 に答える 1

1

setSource(record.data) と言うとうまくいくかもしれません。私は今これで遊んでいます。正しい情報が表示されているように見えますが、編集を有効にするフィールドの詳細を制御できなくなる可能性があります。

于 2012-10-02T20:40:51.723 に答える