2011-06-07 114 views
12

我正在ExtJS 4.0上工作,我想在網格中顯示嵌套的JSON數據。爲此,我使用Ext.data.reader.Reader docs, "Loading Nested Data"中給出的示例。這很好,很簡單,但現在我想在網格中顯示這些數據。我該如何設置dataIndex如何在EXTJS 4網格中顯示嵌套的Json數據?

這是我的樣本模型和存儲:

Ext.define("data", { 
    extend: 'Ext.data.Model', 
    fields: ['year', 'state'], 
    hasMany: { 
     model: 'record', 
     name: 'record' 
    }, 
    proxy: { 
     type: 'rest', 
     url: 'Column.json.php', 
     reader: { 
      type: 'json', 
      root: 'data' 
     } 
    } 
}); 

Ext.define("record", { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'autorization', 'expendture'], 
    belongsTo: 'User' 
}); 
var store1 = new Ext.data.Store({ 
    model: "data" 
}); 

我的JSON:

{ 
    "data": [{ 
     "year": "2010", 
     "state": "MP", 
     "record": [{ 
      "id": "auth", 
      "autorization": "9.201" 
     }, { 
      "id": "exp", 
      "expendture": "1.250" 
     }] 
    }] 
} 

我想讀autorizationexpendtureid

回答

12

你必須在做型號/記錄級別使用mapping confg字段,所以你可以這樣做:

Ext.define("record", { 
    extend: 'Ext.data.Model', 
    fields: [ 
     'id', 
     {name: 'autorization', mapping: 'record[0].autorization'}, 
     {name: 'expendture', mapping: 'record[1].expendture'} 
    ], 
    belongsTo: 'User' 
}); 

很高興地注意到在Sencha Forums上問問題可能會更快。

+8

「它可能更快在Sencha論壇上提問「,具有諷刺意味的是,我通過Sencha論壇的鏈接發現了這個問題。 – 2012-05-16 14:05:46

+0

你能在這個答案中提供更多信息嗎?一旦使用此處列出的映射列表,如何定義網格? – 2012-05-30 19:38:13

1

我想指出的是,Store.loadData不尊重字段映射

的問題是,煎茶隊改變了loadData的行爲,它不是東西,是在一個方式是明確的記載。所以,如果你正在使用它,以下內容添加到您的代碼庫(上面您的應用程序代碼,但低於EXT-all.js):

Ext.override(Ext.data.Store, { 
loadDataViaReader : function(data, append) { 
var me  = this, 
    result = me.proxy.reader.read(data), 
    records = result.records; 

me.loadRecords(records, { addRecords: append }); 
me.fireEvent('load', me, result.records, true); 
}    
}); 

然後使用:

mystore.loadDataViaReader(data)