如何在Extjs中实现动态网格?

时间:2015-04-27 15:16:44

标签: json extjs sencha-cmd extjs-grid

我想在Extjs中实现动态网格。我找到了这个How do you create table columns and fields from json? (Dynamic Grid),接受的答案看起来不错。 在我的情况下,我没有代理商店,但代理模型:

 fields: [ {name: 'id', type: 'int', persist: false},
              {name: 'gender', type: 'auto'},
              {name: 'name', type: 'auto'},
              {name: 'age', type: 'int'}],

     identifier: 'sequential', // to generate -1, -2 etc on the client

    proxy: {
        type: 'rest',
        idParam: "id",

        url:'http://localhost:3000/posts',
        api: 
        {
            read  : 'http://localhost:3000/db',
            create: 'http://localhost:3000/posts',
            update  : 'http://localhost:3000/posts' ,
            destroy : 'http://localhost:3000/posts' 

        },

        headers: {'Content-Type': "application/json" },     

        reader: {
        type: 'json',
        rootProperty:'posts',

        totalProperty: 'total'

        },
        writer: {
            type: 'json'
        }

我的商店看起来像是:

model: 'ThemeApp.model.peopleModel',

    storeId: 'peopleStore',
        pageSize: 500,  
        autoLoad: true,
        autoSync: true,     
        pageSize: 5,    

        autoLoad: {start: 0, limit: 5},
        autoSync: true,

        sorters: [{
            property : 'age',
            direction:'ASC'
                    }],

        groupField: 'gender'

});

在我看来我已经定义了列:[]但是我不知道在哪里调用metachange函数。

任何人都可以告诉我在哪里使用metachange函数,我应该使用商店或代理的metachange函数吗?

1 个答案:

答案 0 :(得分:1)

通常,您不希望在模型上配置代理,这仅在您希望使用没有存储的独立模型实例时才有用。

将代理配置移动到Store,并使服务器使用其他元数据对象响应读取请求,然后您可以在metachange事件处理程序中使用该对象来配置网格。

使用Reader元数据 是执行“动态”网格的正确方法。