首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象数组的DataModel

对象数组的DataModel
EN

Stack Overflow用户
提问于 2013-01-08 05:16:24
回答 1查看 99关注 0票数 0

我需要一些使用Ext创建网格的帮助。下面是我使用的代码:

作为数据源,我有一个数组,如下所示:

代码语言:javascript
复制
var listaEventos = [
    {"nu_evento":"1","dt_solicitacao":"2013-01-04 14:29:26","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"2","dt_solicitacao":"2013-01-04 14:54:29","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"3","dt_solicitacao":"2013-01-04 14:55:35","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"4","dt_solicitacao":"2013-01-04 15:04:47","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"5","dt_solicitacao":"2013-01-04 15:07:24","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"6","dt_solicitacao":"2013-01-04 15:08:07","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"},
    {"nu_evento":"7","dt_solicitacao":"2013-01-04 15:17:27","no_evento":"nome do evento","empregado_responsavel":"nome do responsavel","contato":"contato unidade"}
];

这个数组是使用PHP从DBMS中查询的,PHP使用json将该数组存储在HTML文档中,然后我的js代码获取该数组并创建一个Ext网格来打印它,并进行排序和填充。问题是我无法让Ext理解每个数组元素都是网格的行,而每个对象字段代表网格的列。

为此,我使用以下数据模型:

代码语言:javascript
复制
Ext.define('eventosDataModel', {
    extend: 'Ext.data.Model',
    fields: [
       {name: 'nu_evento', type: 'string'},
       {name: 'dt_solicitacao', type: 'date',  dateFormat: "Y-m-d H:i:s"},
       {name: 'no_evento', type: 'string'},
       {name: 'empregado_responsavel', type: 'string'},
       {name: 'contato', type: 'string'}
    ],
    idProperty: 'eventos'
});

和这个商店:

代码语言:javascript
复制
var store = Ext.create('Ext.data.ArrayStore', {
    model: 'eventosDataModel',
    data: listaEventos
});

最后,我创建了网格:

代码语言:javascript
复制
var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    stateful: true,
    collapsible: false,
    multiSelect: true,
    stateId: 'stateGrid',
    columns: columnsStructure,
    height: 350,
    width: 1200,
    title: 'Eventos Existentes',
    renderTo: 'eventos-extgrid',
    viewConfig: {
        stripeRows: true,
        enableTextSelection: true
    }
});

我在分离变量中指定的列:

代码语言:javascript
复制
var columnsStructure = [
        {
            text     : '#',
            width     : 50,
            sortable : true,
            dataIndex: 'nu_evento'
        },
        {
            text     : 'Nome do Evento',
            width    : 300,
            sortable : true,
            dataIndex: 'no_evento'
        },
        {
            text     : 'Data da Solicitação',
            width    : 200,
            sortable : true,
            renderer : Ext.util.Format.dateRenderer('d/m/Y H:i:s'),
            dataIndex: 'dt_solicitacao'
        },
        {
            text     : 'Empregado Responsável',
            width    : 300,
            sortable : true,
            dataIndex: 'empregado_responsavel'
        },
        {
            text     : 'Contato',
            width    : 345,
            sortable : false,
            dataIndex: 'contato'
        }
    ];

它正确地创建网格,创建列,甚至创建与数组itens数量一样多的行。但是所有的单元格都是空的!

我设法将每个对象转换为一个数组:

代码语言:javascript
复制
var listaEventos = [
    ["1","2013-01-04 14:29:26","nome do evento","user name","contato unidade"],
    ["2","2013-01-04 14:54:29","nome do evento","user name","contato unidade"],
    ["3","2013-01-04 14:55:35","nome do evento","user name","contato unidade"],
    ["4","2013-01-04 15:04:47","nome do evento","user name","contato unidade"],
    ["5","2013-01-04 15:07:24","nome do evento","user name","contato unidade"],
    ["6","2013-01-04 15:08:07","nome do evento","user name","contato unidade"],
    ["7","2013-01-04 15:17:27","nome do evento","user name","contato unidade"]
];

如果我向JS代码提供这个数组,那么所有数据都会显示在网格上!

这对我来说很好,但它的可维护性很差。将PHP的DAO链接到Ext的网格的唯一原因是元素在PHP上添加到数组并在JS上列出的顺序。当然,我可以对每个文件做很大的注释,解释顺序的重要性,但如果PHP数组键与JS对象名相关,并且Ext可以理解它并按名称绑定,而不是按简单的顺序绑定,那就更好了。

有没有一种方法可以实现这种绑定?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 13:54:29

您应该使用正确的idProperty (您使用的是idProperty: 'eventos'),我在您的数据数组中没有看到eventos。在您的例子中,我想应该是idProperty: 'nu_evento'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14204157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档