【问题标题】:Unable to render data into grid column using JSON results无法使用 JSON 结果将数据呈现到网格列中
【发布时间】:2019-11-05 03:08:06
【问题描述】:

我有一个类似这样的网格商店。

var gridStore = Ext.create('Ext.data.Store',{
    proxy : {
        type : 'ajax',
        actionMethods : {
            read : 'POST'
        },
        url : 'getECIAgentWrapperJobs.do',
        reader : {
            type : 'json',
            rootProperty : 'rows',
            totalProperty : 'results'
        }
    },
    pageSize : 3,
    autoLoad : {start: 0, limit: 3}
});

显然,它向 url 发出 AJAX 请求。 我为这家商店获得的 JSON 响应如下所示:

{  
   "results":2,
   "rows":[  
      {  
         "pkTable1":1,
         "name":"Rick",
         "eciAgentJob":{  
            "pkTable2":11,
            "name":"Play Local Ar",
         },
      }
   ],
   "msg":null,
   "success":true,
}

这就是我的网格的样子:

var mappedEciAgentJobsGrids = Ext.create('Ext.grid.Panel',{
        store : gridStore,
        columns : [
            {
                dataIndex : 'pkTable1',
                header : 'Pk of table 1'
            },
            {
                dataIndex : 'name',
                header : 'Name'
            },
            {
                dataIndex : 'eciAgentJob.pkTable2',
                header : 'Pk of Table 2'
            }
        ]
    });  

现在在我的 UI 中,前 2 列(分别带有 dataIndex:pkTable2 和 name)加载正常。但对于第三个它没有。 我知道这是因为我将 dataIndex 用作“eciAgentJob.pkTable2”。但是,当我们像我得到的那样获得响应时,在列中加载数据的方法是什么(其中 eciAgentJob 是原始 JSON 中的一个对象)。 请帮忙。

编辑:由于其他一些用例原因,我不想使用渲染器。

【问题讨论】:

    标签: json extjs extjs4 extjs4.1 extjs6


    【解决方案1】:

    在您的模型中定义一个新字段并使用必填字段进行映射。在转换函数中,从记录中选择任何值。

     Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [
            { name: 'name', type: 'string ' },
            {
             name: 'columnName',
    
             convert: function (value, record) {
                 return "return what ever you want"
             }
         }
    
        ]
    });
    

    【讨论】:

    • 能否请您提供更多代码(主要用于商店和网格)。实际上我对 extjs 完全陌生。还是谢谢
    • 和你一样,但我确实会在商店中添加一个模型。这个答案显示了一个示例定义。我会使用映射:'eciAgentJob.pkTable2',但转换也可以......只需在商店配置中添加模型:'用户',就像这个答案建议的那样......docs.sencha.com/extjs/6.7.0/classic/Ext.data.field.Field.html
    • 我一定会帮忙的。我为你准备了一把小提琴。请作为参考使用。我在模型中创建了一个名为 NamePhone 的新列,并存储名称+电话 fiddle.sencha.com/#fiddle/2tb8&view/editor 如果您想访问 json 中的下一个节点,则使用 record.getData().node.node insted of record.get('name')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多