2012-04-04 18 views
0

私はそれにマップされたストアを持つExtJSグリッドを持っています。ExtJSグリッド選択モデル

ストアのJSONレスポンスには20個のフィールドが含まれていますが、ストア内のフィールドは10個しかマッピングされていません。他の10個のフィールドを私が店舗にマップしなくてもそれを入手することは可能ですか、それともすべてのフィールドを店舗にマッピングする必要がありますか?グリッドの行選択イベントでこれを行います。コードについては、グリッドを作成し、ストアをマップし、イベントを発生させ、選択された行のレコードをマップされた10フィールドで取得することもできます。

シェカールによって要求されたよう:

ストアの定義

Ext.define('gdoc.store.PrintPaperStore', { 
    extend: 'Ext.data.Store', 

    constructor: function(cfg) { 
     var me = this; 
     cfg = cfg || {}; 
     me.callParent([Ext.apply({ 
      autoLoad: true, 
      storeId: 'PrintPaperStore', 
      proxy: { 
       type: 'ajax', 
       url: 'urlToRetrieveTheJSON', 
       reader: { 
        type: 'json', 
        root: 'root' 
       } 
      }, 
      fields: [ 
       { 
        mapping: 'value', 
        name: 'value' 
       }, 
       { 
        mapping: 'display', 
        name: 'display' 
       } 
      ] 
     }, cfg)]); 
    } 
}); 

JSON応答:あなたは私からのみ 'の値' と '表示' をマッピングしている見ることができるように

{ 
    "root":[{ 
     "value":"COATED115", 
     "display":"Coated recycled paper (115gms)", 
     "description" : "Good quality", 
     "extra" : "EXTRA INFO" 
    },{ 
     "value":"COATED135", 
     "display":"Coated recycled paper (135gms)", 
     "description" : "Good quality" 
    },{ 
     "value":"OFFSET", 
     "display":"Offset recycled paper (80gms)", 
     "description" : "Good quality", 
     "extra" : "EXTRA INFO" 
    },{ 
     "value":"OTHER", 
     "display":"Other paper (client to order)", 
     "description" : "Good quality", 
     "extra" : "EXTRA INFO" 
    }] 
    } 

ストア内のJSON応答。私が店内でそれらをマップする必要なしに、 '記述'と '余分'の値を再検討することは可能ですか?

+0

urストアのコードを表示できますか? – Shekhar

+0

あなたの質問にあなたのコードを含めてください。 – joelparkerhenderson

+0

ありがとう、コードを追加しました。 – Zaje

答えて

1

モデルの.rawプロパティにアクセスできます。このモデルには、リーダーからの生のJSONが含まれます。

+0

これをチェックしてください、ありがとう – Zaje

1

いいえモデルまたはストアでは、JSONデータから使用可能にするすべてのフィールドを設定する必要があります。

余分なフィールドをマップしたくない理由が混乱していますか?それは純粋に時間を節約し、データにアクセスするためのより迅速な方法があることを望んでいますか?あるいは、フィールド名が動的であることを期待していますか?

動的な理由がある場合は、解決策についてこの記事をご覧ください。 Dynamic model with ExtJS 4

+0

時間節約ははいの1つです。しかし、フィールド名が動的に変化し、私が扱っているフィールドが20以上になると、別の方法でアクセスできるかどうか疑問に思っていました。 – Zaje

+0

私は、モデル/ストアを即座に生成し、グリッドの列を更新する方法を示すリンクを追加しました。それで、あなたが望む結果を得ることができるはずです。 –

+0

これもチェックします。ありがとうJamie – Zaje

関連する問題