subarray models mapping issues with gridpanel extjs 4

人盡茶涼 提交于 2019-12-10 12:05:53

问题


stackoverflow team member I am having problem with displaying the json subarray data to my gridpanel my json data is below

{
    "total": 11,
    "success": true,
    "employeetaskdetdata": [{
        "subject": "Work in progress",
        "employee": {
            "username": "yogen",
            "designation": {
                "department": {
                    "company": {
                        "cmpname": "Kintu Designs Pvt ltd",
                        "cmptitle": "Kintu Designs Pvt ltd",
                        "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                        "cmpfax": "8128812153",
                        "cmpcontact": "8128812153",
                        "cmpwebsite": "www.kintudesigns.com",
                        "cmpemail1": "yaryan997@gmail.com",
                        "cmpemail2": "yaryan997@gmail.com",
                        "cmpcountry": "India",
                        "cmpstate": "Gujarat",
                        "cmpcity": "Surat",
                        "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                        "cmplogo": "calendar.png",
                        "cmplogopath": "upload/images/",
                        "cmpcreatedby": 1,
                        "cmpcreatedon": 1335764510000,
                        "cmpmodifiedon": 1335764510000,
                        "cmpmodifiedby": 0,
                        "id": 1
                    },
                    "departname": "Programmer",
                    "createdby": 1,
                    "createdon": 1335764655000,
                    "modifiedby": 1,
                    "modifiedon": 1335764655000,
                    "departdescr": "<b>?Programmer</b>",
                    "id": 2
                },
                "createdby": 1,
                "createdon": 1335764825000,
                "modifiedby": 1,
                "modifiedon": 1335764825000,
                "designame": "Senior JAVA Programmer",
                "desigdescr": "<b>?Senior JAVA Programmer</b>",
                "id": 6
            },
            "createdby": 1,
            "createdon": 1335765074000,
            "modifiedby": 1,
            "modifiedon": 1335765074000,
            "dateofbirth": 1335810600000,
            "joindate": 1337106600000,
            "firstname": "Yogendra",
            "surname": "Singh",
            "gender": "M",
            "marital": "U",
            "nationality": "",
            "contactno": "",
            "mobileno": "",
            "email": "",
            "otheremail": "",
            "fathername": "",
            "mothername": "",
            "accountno": "",
            "salary": "",
            "bank": {
                "bankname": "ICICI Bank",
                "bankaddress": "ICICI Bank Nanpura",
                "id": 1
            },
            "address": "",
            "id": 6,
            "password": "123"
        },
        "todaysdate": "2012-05-05",
        "createdby": 6,
        "createdon": 1336203851000,
        "modifiedby": 6,
        "modifiedon": 1336203851000,
        "project": {
            "company": {
                "cmpname": "Kintu Designs Pvt ltd",
                "cmptitle": "Kintu Designs Pvt ltd",
                "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                "cmpfax": "8128812153",
                "cmpcontact": "8128812153",
                "cmpwebsite": "www.kintudesigns.com",
                "cmpemail1": "yaryan997@gmail.com",
                "cmpemail2": "yaryan997@gmail.com",
                "cmpcountry": "India",
                "cmpstate": "Gujarat",
                "cmpcity": "Surat",
                "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                "cmplogo": "calendar.png",
                "cmplogopath": "upload/images/",
                "cmpcreatedby": 1,
                "cmpcreatedon": 1335764510000,
                "cmpmodifiedon": 1335764510000,
                "cmpmodifiedby": 0,
                "id": 1
            },
            "createdby": 1,
            "createdon": 1335765435000,
            "modifiedby": 1,
            "modifiedon": 1335765435000,
            "projectname": "Project I",
            "projecttitle": "Project I",
            "projectdesc": "<b>Kintu Design Pvt ltd new Project I</b>",
            "projectstart": 1335810600000,
            "projectend": 1336761000000,
            "id": 1
        },
        "task": {
            "duration": 4.0,
            "employee": [{
                "username": "hiren",
                "designation": {
                    "department": {
                        "company": {
                            "cmpname": "Kintu Designs Pvt ltd",
                            "cmptitle": "Kintu Designs Pvt ltd",
                            "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                            "cmpfax": "8128812153",
                            "cmpcontact": "8128812153",
                            "cmpwebsite": "www.kintudesigns.com",
                            "cmpemail1": "yaryan997@gmail.com",
                            "cmpemail2": "yaryan997@gmail.com",
                            "cmpcountry": "India",
                            "cmpstate": "Gujarat",
                            "cmpcity": "Surat",
                            "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                            "cmplogo": "calendar.png",
                            "cmplogopath": "upload/images/",
                            "cmpcreatedby": 1,
                            "cmpcreatedon": 1335764510000,
                            "cmpmodifiedon": 1335764510000,
                            "cmpmodifiedby": 0,
                            "id": 1
                        },
                        "departname": "Programmer",
                        "createdby": 1,
                        "createdon": 1335764655000,
                        "modifiedby": 1,
                        "modifiedon": 1335764655000,
                        "departdescr": "<b>?Programmer</b>",
                        "id": 2
                    },
                    "createdby": 1,
                    "createdon": 1335764755000,
                    "modifiedby": 1,
                    "modifiedon": 1335764755000,
                    "designame": "Senior PHP Programmer",
                    "desigdescr": "<b>?Senior PHP Programmer</b>",
                    "id": 3
                },
                "createdby": 1,
                "createdon": 1335765018000,
                "modifiedby": 1,
                "modifiedon": 1335765018000,
                "dateofbirth": null,
                "joindate": null,
                "firstname": "Hiren",
                "surname": "Patel",
                "gender": "M",
                "marital": "U",
                "nationality": "",
                "contactno": "",
                "mobileno": "",
                "email": "",
                "otheremail": "",
                "fathername": "",
                "mothername": "",
                "accountno": "",
                "salary": "",
                "bank": {
                    "bankname": "ICICI Bank",
                    "bankaddress": "ICICI Bank Nanpura",
                    "id": 1
                },
                "address": "",
                "id": 4,
                "password": "123"
            }, {
                "username": "yogen",
                "designation": {
                    "department": {
                        "company": {
                            "cmpname": "Kintu Designs Pvt ltd",
                            "cmptitle": "Kintu Designs Pvt ltd",
                            "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                            "cmpfax": "8128812153",
                            "cmpcontact": "8128812153",
                            "cmpwebsite": "www.kintudesigns.com",
                            "cmpemail1": "yaryan997@gmail.com",
                            "cmpemail2": "yaryan997@gmail.com",
                            "cmpcountry": "India",
                            "cmpstate": "Gujarat",
                            "cmpcity": "Surat",
                            "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                            "cmplogo": "calendar.png",
                            "cmplogopath": "upload/images/",
                            "cmpcreatedby": 1,
                            "cmpcreatedon": 1335764510000,
                            "cmpmodifiedon": 1335764510000,
                            "cmpmodifiedby": 0,
                            "id": 1
                        },
                        "departname": "Programmer",
                        "createdby": 1,
                        "createdon": 1335764655000,
                        "modifiedby": 1,
                        "modifiedon": 1335764655000,
                        "departdescr": "<b>?Programmer</b>",
                        "id": 2
                    },
                    "createdby": 1,
                    "createdon": 1335764825000,
                    "modifiedby": 1,
                    "modifiedon": 1335764825000,
                    "designame": "Senior JAVA Programmer",
                    "desigdescr": "<b>?Senior JAVA Programmer</b>",
                    "id": 6
                },
                "createdby": 1,
                "createdon": 1335765074000,
                "modifiedby": 1,
                "modifiedon": 1335765074000,
                "dateofbirth": 1335810600000,
                "joindate": 1337106600000,
                "firstname": "Yogendra",
                "surname": "Singh",
                "gender": "M",
                "marital": "U",
                "nationality": "",
                "contactno": "",
                "mobileno": "",
                "email": "",
                "otheremail": "",
                "fathername": "",
                "mothername": "",
                "accountno": "",
                "salary": "",
                "bank": {
                    "bankname": "ICICI Bank",
                    "bankaddress": "ICICI Bank Nanpura",
                    "id": 1
                },
                "address": "",
                "id": 6,
                "password": "123"
            }],
            "createdby": 1,
            "createdon": 1336460152000,
            "modifiedby": 1,
            "modifiedon": 1336460152000,
            "project": {
                "company": {
                    "cmpname": "Kintu Designs Pvt ltd",
                    "cmptitle": "Kintu Designs Pvt ltd",
                    "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                    "cmpfax": "8128812153",
                    "cmpcontact": "8128812153",
                    "cmpwebsite": "www.kintudesigns.com",
                    "cmpemail1": "yaryan997@gmail.com",
                    "cmpemail2": "yaryan997@gmail.com",
                    "cmpcountry": "India",
                    "cmpstate": "Gujarat",
                    "cmpcity": "Surat",
                    "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                    "cmplogo": "calendar.png",
                    "cmplogopath": "upload/images/",
                    "cmpcreatedby": 1,
                    "cmpcreatedon": 1335764510000,
                    "cmpmodifiedon": 1335764510000,
                    "cmpmodifiedby": 0,
                    "id": 1
                },
                "createdby": 1,
                "createdon": 1335765435000,
                "modifiedby": 1,
                "modifiedon": 1335765435000,
                "projectname": "Project I",
                "projecttitle": "Project I",
                "projectdesc": "<b>Kintu Design Pvt ltd new Project I</b>",
                "projectstart": 1335810600000,
                "projectend": 1336761000000,
                "id": 1
            },
            "percentdone": 55,
            "durationunit": "d",
            "startdate": 1336415400000,
            "parentid": 2,
            "taskindex": 0,
            "taskname": "Sub Task 2 1",
            "enddate": 1336761000000,
            "priority": 2,
            "id": 3,
            "depth": 2
        },
        "percentdone": 20,
        "totalworkedhrs": -9.5,
        "starttime": "09:00:00",
        "finishtime": "00:00:00",
        "id": 1,
        "description": "<b>Work in progress</b>",
        "hours": 0,
        "minutes": 30
    }, {
        "subject": "Work in progresss",
        "employee": {
            "username": "yogen",
            "designation": {
                "department": {
                    "company": {
                        "cmpname": "Kintu Designs Pvt ltd",
                        "cmptitle": "Kintu Designs Pvt ltd",
                        "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                        "cmpfax": "8128812153",
                        "cmpcontact": "8128812153",
                        "cmpwebsite": "www.kintudesigns.com",
                        "cmpemail1": "yaryan997@gmail.com",
                        "cmpemail2": "yaryan997@gmail.com",
                        "cmpcountry": "India",
                        "cmpstate": "Gujarat",
                        "cmpcity": "Surat",
                        "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                        "cmplogo": "calendar.png",
                        "cmplogopath": "upload/images/",
                        "cmpcreatedby": 1,
                        "cmpcreatedon": 1335764510000,
                        "cmpmodifiedon": 1335764510000,
                        "cmpmodifiedby": 0,
                        "id": 1
                    },
                    "departname": "Programmer",
                    "createdby": 1,
                    "createdon": 1335764655000,
                    "modifiedby": 1,
                    "modifiedon": 1335764655000,
                    "departdescr": "<b>?Programmer</b>",
                    "id": 2
                },
                "createdby": 1,
                "createdon": 1335764825000,
                "modifiedby": 1,
                "modifiedon": 1335764825000,
                "designame": "Senior JAVA Programmer",
                "desigdescr": "<b>?Senior JAVA Programmer</b>",
                "id": 6
            },
            "createdby": 1,
            "createdon": 1335765074000,
            "modifiedby": 1,
            "modifiedon": 1335765074000,
            "dateofbirth": 1335810600000,
            "joindate": 1337106600000,
            "firstname": "Yogendra",
            "surname": "Singh",
            "gender": "M",
            "marital": "U",
            "nationality": "",
            "contactno": "",
            "mobileno": "",
            "email": "",
            "otheremail": "",
            "fathername": "",
            "mothername": "",
            "accountno": "",
            "salary": "",
            "bank": {
                "bankname": "ICICI Bank",
                "bankaddress": "ICICI Bank Nanpura",
                "id": 1
            },
            "address": "",
            "id": 6,
            "password": "123"
        },
        "todaysdate": "2012-05-05",
        "createdby": 6,
        "createdon": 1336204557000,
        "modifiedby": 6,
        "modifiedon": 1336204557000,
        "project": {
            "company": {
                "cmpname": "Kintu Designs Pvt ltd",
                "cmptitle": "Kintu Designs Pvt ltd",
                "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                "cmpfax": "8128812153",
                "cmpcontact": "8128812153",
                "cmpwebsite": "www.kintudesigns.com",
                "cmpemail1": "yaryan997@gmail.com",
                "cmpemail2": "yaryan997@gmail.com",
                "cmpcountry": "India",
                "cmpstate": "Gujarat",
                "cmpcity": "Surat",
                "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                "cmplogo": "calendar.png",
                "cmplogopath": "upload/images/",
                "cmpcreatedby": 1,
                "cmpcreatedon": 1335764510000,
                "cmpmodifiedon": 1335764510000,
                "cmpmodifiedby": 0,
                "id": 1
            },
            "createdby": 1,
            "createdon": 1335765435000,
            "modifiedby": 1,
            "modifiedon": 1335765435000,
            "projectname": "Project I",
            "projecttitle": "Project I",
            "projectdesc": "<b>Kintu Design Pvt ltd new Project I</b>",
            "projectstart": 1335810600000,
            "projectend": 1336761000000,
            "id": 1
        },
        "task": {
            "duration": 4.0,
            "employee": [{
                "username": "hiren",
                "designation": {
                    "department": {
                        "company": {
                            "cmpname": "Kintu Designs Pvt ltd",
                            "cmptitle": "Kintu Designs Pvt ltd",
                            "cmpdesc": "<b>D-104 Toral Appartment Surat,<br>Timalyabad.</b>",
                            "cmpfax": "8128812153",
                            "cmpcontact": "8128812153",
                            "cmpwebsite": "www.kintudesigns.com",
                            "cmpemail1": "yaryan997@gmail.com",
                            "cmpemail2": "yaryan997@gmail.com",
                            "cmpcountry": "India",
                            "cmpstate": "Gujarat",
                            "cmpcity": "Surat",
                            "cmpaddress": "D-104 Toral Appartment Surat,\nTimalyabad.",
                            "cmplogo": "calendar.png",
                            "cmplogopath": "upload/images/",
                            "cmpcreatedby": 1,
                            "cmpcreatedon": 1335764510000,
                            "cmpmodifiedon": 1335764510000,
                            "cmpmodifiedby": 0,
                            "id": 1
                        },
                        "departname": "Programmer",
                        "createdby": 1,
                        "createdon": 1335764655000,
                        "modifiedby": 1,
                        "modifiedon": 1335764655000,
                        "departdescr": "<b>?Programmer</b>",
                        "id": 2
                    },
                    "createdby": 1,
                    "createdon": 1335764755000,
                    "modifiedby": 1,
                    "modifiedon": 1335764755000,
                    "designame": "Senior PHP Programmer",
                    "desigdescr": "<b>?Senior PHP Programmer</b>",
                    "id": 3
                },
                "createdby": 1,
                "createdon": 1335765018000,
                "modifiedby": 1,
                "modifiedon": 1335765018000,
                "dateofbirth": null,
                "joindate": null,
                "firstname": "Hiren",
                "surname": "Patel",
                "gender": "M",
                "marital": "U",
                "nationality": "",
                "contactno": "",
                "mobileno": "",
                "email": "",
                "otheremail": "",
                "fathername": "",
                "mothername": "",
                "accountno": "",
                "salary": "",
                "bank": {
                    "bankname": "ICICI Bank",
                    "bankaddress": "ICICI Bank Nanpura",
                    "id": 1
                },
                "address": "",
                "id": 4,
                "password": "123"
            }]
}

and my model is below

Ext.define('DEV.model.employeetaskdetModel', {
    extend: 'Ext.data.Model',
    fields : [
              { name: 'id'},
              { name: 'taskname', mapping:'task.taskname'},
              { name: 'firstname', mapping: 'employee.firstname'},
              { name: 'employee',type: 'auto'},
              { name: 'percentdone'}
          ]
});

and my grid panel columns are below

columns: [ {
     xtype: 'gridcolumn',
     dataIndex: 'percentdone',
     text: 'Percent Done'
 }, {
     xtype: 'gridcolumn',
     dataIndex: 'firstname',
     text: 'First Name'
 }]

I am not able to show the firstname in my gridPanel. But when I change the firstname column with below code it shows me the firstname gridpanel correctly.

{
         xtype: 'gridcolumn',
         dataIndex: 'employee',
         text: 'User Name',
         renderer: function (employee) {
             var result = [];
             employee = employee || [];
             var value = employee.firstname;
             if (value) {
                 result.push(value);
             }
             return result;
             console.log(employee.firstname);
         }
     },

please suggest me why my gridpanel didn't show the firstname of user directly. What's the problem with my code. And why its showing the data when I add the renderer function.


回答1:


I encountered a similar problem and solve it.

Mapping property is not required for mapping nested json data.

Model:

Ext.define("Model", {
    extend: "Ext.data.Model",
    fields: [
        {name: "id", type: "int"},
        {name: "name.name"},
        {name: "phone", mapping: "name.phone"},
        {name: "descr", type: "string", mapping:'description'}
    ]
});

Store with data that we will recieve from jsfiddle test echo ajax service:

var Store = Ext.create("Ext.data.Store", {
    model: "Model",
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: '/echo/json/',
        //
        actionMethods: {read: 'POST'}, // echo ajax service required
        extraParams: {
            json: Ext.JSON.encode({
                root: [
                    {id: 1, name: {name:"John", phone: "123"}, description:"Fapfapfap"},
                    {id: 2, name: {name:"Danny", phone: "234"}, description:"Boobooboo"},
                    {id: 3, name: {name:"Tom", phone: "345"}, description:"Tralala"},
                    {id: 4, name: {name:"Jane", phone: "456"}, description:"Ololo"},
                ]
                })
        },
        reader: {
            type: 'json',
            root: 'root'
        }
    },
});

Grid:

Ext.create("Ext.grid.Panel", {
    store: Store,
    columns: [
        {dataIndex: "id", header:"ID"},
        {dataIndex: "name.name", header:"Name", flex: 1, editor: "textfield"},
        {dataIndex: "phone", header:"Phone", flex: 1, editor: "textfield"},
        {dataIndex: "descr", header: "Description", flex: 2, editor: "htmleditor"}
    ],
    renderTo: Ext.getBody(),
});

This should work, if other problems is absent.

Here you can see work example http://jsfiddle.net/Fgh7z/1/



来源:https://stackoverflow.com/questions/10516019/subarray-models-mapping-issues-with-gridpanel-extjs-4

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!