Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ExtJS 4网格:显示具有关联的嵌套数据模型_Php_Javascript_Extjs_Extjs4 - Fatal编程技术网

Php ExtJS 4网格:显示具有关联的嵌套数据模型

Php ExtJS 4网格:显示具有关联的嵌套数据模型,php,javascript,extjs,extjs4,Php,Javascript,Extjs,Extjs4,我是ExtJS新手,遇到了一个问题。我有一个深嵌套的json数据,我已经使用多个关联模型成功地将其加载到存储中。但是对于下一步,我无法在简单的网格中显示这些数据,请帮助。如何在位于json内部的网格中显示某些内容。。。。这是我的json { "success" : "true", "total":2, "user" : { "id" : 12, "email" : "abc@gmai

我是ExtJS新手,遇到了一个问题。我有一个深嵌套的json数据,我已经使用多个关联模型成功地将其加载到存储中。但是对于下一步,我无法在简单的网格中显示这些数据,请帮助。如何在位于json内部的网格中显示某些内容。。。。这是我的json

{
        "success" : "true",
        "total":2,
        "user" : 
        {
            "id" : 12,
            "email" : "abc@gmail.com",          
            "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'
            }
        ]
    });
});

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

也许映射可以帮助您,我已通过以下方式解决了类似(但更简单)的问题: 我的json:

我的模型:

Ext.define('Operation', {
    extend: 'Ext.data.Model',
    idProperty: 'timestamp.__dt__',
    fields: [{name:'__dt__', allowBlank:true, mapping:'timestamp.__dt__'},
             {name:'description', allowBlank:false}]
});
我的专栏:

columns: [{header: 'Timestamp', width: 150, sortable: true, dataIndex: '__dt__'},
          {header: 'Description' , width: 100, sortable: true, dataIndex: 'description', editor:'textfield'}],

希望它有帮助…

如果您的json对象不满足extjs要求,只需更改对象格式即可。你可以做类似的事情:

Ext.ajax.request({url: 'getRecords.php', success: function(response) {
    var data = Ext.decode(response.reseponseText);
    //format your data
    grid.loadData(formatedData);
}})

您还可以在服务器端格式化json对象

“前Ext JS联合创始人和核心开发人员”我相信您的这一点:)为什么ExtJS不能做其他较小项目可以做的事情:只渲染整个json树?“积极工作”但仍然没有在anno 2016上工作。情不自禁。
Ext.ajax.request({url: 'getRecords.php', success: function(response) {
    var data = Ext.decode(response.reseponseText);
    //format your data
    grid.loadData(formatedData);
}})