Extjs4 - 如何从返回的json生成网格?

时间:2011-10-24 08:19:31

标签: extjs4

我有一个表单和一个网格来提交查询,如下所示:

items:[  
{  
     fieldLabel: 'query the month',  
     xtype     : 'textfield',  
     name      : 'query_year_month',  
     id:   'query_year_month'  
} ],  

buttons:  {  
    text: 'submit',  
    formBind: true, //only enabled once the form is valid  
    disabled: false,
    handler: function() {
        //some code         
        }

var store = Ext.create('Ext.data.Store', {
        model: //uncertain,
        region : 'south',
        pageSize: 15,

        proxy: {
            type: 'ajax',
            url : 'brokee/brokagequery/',
            reader: {
            type: 'json',
            root: 'users'
            }
        },

        autoLoad: false    
});

我想在提交表单后将数据加载到网格中。返回数据是json
结构,我不想定义静态模型绑定到商店,也不想定义网格列,因为返回的数据是未经确认的。应该从json数据生成商店模型和网格列, 例如:json:{'field1':data1,'field2':data2} 模型应该像这样生成:

Ext.define('somemodel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'field1', type: 'string'},
        {name: 'field2', type: 'string'}
               ]
});

在官方演示中,商店和模型是预定义的,然后调用store.load方法通过代理刷新网格。但是,当需要生成商店和模型时,我该怎么做?

1 个答案:

答案 0 :(得分:0)

当你加载你的json时,你可以像这样创建商店商店/模型....使用记录.raw来提取值并且:

Ext.create("Ext.data.JsonStore",{
    id:record.raw.storeID,
    model: Ext.define('App.dataGridModel', {
        extend: 'Ext.data.Model',
        fields: [record.raw.id, record.raw.first]...
    })
...

});

与网格等相同..