微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – ExtJS 4网格:显示带关联的嵌套数据模型

我是ExtJS的新手并且遇到了问题.我有一个深度嵌套的json数据,我已经使用多个关联模型成功加载到商店中.但是对于下一步,我无法在简单的网格中显示这些数据,请帮忙.我怎样才能在位于json深处的网格中显示某些内容….这是我的json

{
        "success" : "true",
        "total":2,
        "user" : 
        {
            "id" : 12,
            "email" : "[email protected]",          
            "course" : 
            {
                "name" : "BESE",        
                "institute" : 
                [{
                    "name" : "Engineering University",
                    "semester" :
                    {
                        "number":1,
                        "TCH" : 12,
                        "GPA" : 2.32,
                        "Marks":23.32,
                        "record" : [
                            {
                                "subject" : "Global Studies",
                                "CH":2,
                                "GP":4,
                                "Grade": "A+",
                                "Marks":99.1
                            },
                            {
                                "subject" : "Digital Logic Design",
                                "CH":4,
                                "GP":3.5,
                                "Grade": "B+",
                                "Marks":79.1
                            }
                        ]
                    }
                },
                {
                    "name" : "Another University",
                    "semester" :
                    {
                        "number":2,
                        "TCH" : 22,
                        "GPA" : 1.32,
                        "Marks":13.32,
                        "record" : [
                            {
                                "subject" : "C++",
                                "CH":2,
                                "GP":3,
                                "Grade": "C+",
                                "Marks":59.1
                            },
                            {
                                "subject" : "Engg Math",
                                "CH":4,
                                "GP":2.5,
                                "Grade": "C",
                                "Marks":39.1
                            }
                        ]
                    }
                }]
            }
        }
    }

这是我的代码……

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id',         type: 'int'},
        {name: 'email',      type: 'string'},
    ],
    proxy: {
        type: 'ajax',
        url : 'getRecord.PHP',
        reader: {
            type: 'json',
            root: 'user'
        }
    },
    hasMany: { model: 'Course', name: 'course' ,associationKey: 'course'}

});

Ext.define('Course', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id',         type: 'int'},

        {name: 'name',      type: 'string'},
    ],

    belongsTo: 'User',
    hasMany: { model: 'Institute', name: 'institute' ,associationKey: 'institute'}

});

Ext.define('Institute', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id',         type: 'int'},

        {name: 'name',      type: 'string'},
    ],

    belongsTo: 'Course',
    hasMany: { model: 'Semester', name: 'semester',associationKey: 'semester' }

});

Ext.define('Semester', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'number',     type: 'int'},
        {name: 'TCH',        type: 'float'},
        {name: 'GPA',        type: 'float'},                
        {name: 'Marks',      type: 'float'},
    ],

    belongsTo: 'Institute',
    hasMany: { model: 'Record', name: 'record',associationKey: 'record' }
});
Ext.define('Record', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'subject',    type: 'string'},
        {name: 'CH',         type: 'float'},
        {name: 'GP',         type: 'float'},    
        {name: 'Grade',      type: 'string'},                   
        {name: 'Marks',      type: 'float'},
    ],
    belongsTo: 'Semester',
});

Ext.require('Ext.data.*');
Ext.require('Ext.grid.*');


Ext.onReady(function(){
    Ext.QuickTips.init();
    var store = new Ext.data.Store({
        model: "User",

    });

    store.load({

    });

 Ext.create('Ext.grid.Panel', {
        renderTo: Ext.getBody(),
        store: store,
        width: 400,
        height: 200,
        title: 'Application Users',
        columns: [
            {
                text: 'Name',
                width: 100,
                sortable: false,
                hideable: false,
                dataIndex: 'email'
            },
            {
                text: 'Email Address',
                width: 150,
                dataIndex: 'course>aname',

            },
            {
                text: 'Phone Number',
                flex: 1,
                dataIndex: 'User.course.name'
            }
        ]
    });
});

解决方法:

目前的一个限制是,嵌套数据认情况下不容易加载到网格中,但它正在积极处理.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐