ExtJS的网格中未显示两个模型的属性

时间:2018-07-24 16:55:42

标签: extjs sencha-touch sencha-touch-2 sencha-architect

我有两个模型(Cliente和Pago),并将它们放到第三个模型(Modelo)中,但是在链接数据以在网格中显示它们时,我无法使其显示信息。在两个模型中都有,如果获取数据,则返回我的方法的json。

我该如何呈现或显示我的注册数据?

Modelo模型

public class Modelo
{
    public Pagos Pagos { get;  set; }
    public Cliente Cliente { get;  set; }

    public Modelo()
    {
        Pagos = new Pagos();
        Cliente = new Cliente();
    }
}

模型客户端

public class Cliente
{
    public int IdCliente { get;  set; }
    public string Nombre { get;  set; }
    public int Comision { get;  set; }
    public int Estatus { get;  set; }
}

帕果模型

public class Pagos
{
    public int IdPago { get; set; }
    public int IdCliente { get; set; }
    public Decimal Monto { get; set; }
    public bool Autorizacion { get; set; }
    public string Comentario { get; set; }
    public DateTime Fecha { get; set; }
}

我已经尝试放置model.property,但不起作用。

enter image description here

Ext.define('Modelo', {
    extend: 'Ext.data.Model',
    proxy: {
        type: 'ajax',
        reader: 'Home/GetPagosAutorizados'
    },
    fields: [
        { name: 'IdPago', type:'int' },
        { name: 'Cliente', type: 'string' },
        { name: 'Monto', type: 'float' },
        { name: 'Comision', type: 'int' },
        { name: 'Autorizacion', type: 'bool' },
        { name: 'Comentario', type: 'string' },
        { name: 'Fecha', type: 'string' }
    ]
});
    // create the Data Store
    var store = Ext.create('Ext.data.Store', {
        model: 'Modelo.Pagos',
        proxy: {
            pageParam: false, //to remove param "page"
            startParam: false, //to remove param "start"
            limitParam: false, //to remove param "limit"
            noCache: false, //to remove param "_dc"
            //storeId: 'Data',
            // load using HTTP
            type: 'ajax',
            url: 'Home/GetPagosAutorizados',
            // the return will be XML, so lets set up a reader
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        }
    });


    // create the grid
    var grid = Ext.create('Ext.grid.Panel', {        
        bufferedRenderer: false,
        store: store,
        columns: [
            { text: "ID Pago", width: 120, dataIndex: 'Pagos.IdPago', sortable: true },
            { text: "Cliente", flex: 1, dataIndex: 'Cliente.Nombre', sortable: true },
            { text: "Monto", width: 125, dataIndex: 'Monto', sortable: true },
            { text: "Comisión", width: 125, dataIndex: 'Comision', sortable: true },
            { text: "Autorización", width: 125, dataIndex: 'Autorizacion', sortable: true },
            { text: "Comentario", width: 125, dataIndex: 'Comentario', sortable: true },
            { text: "Fecha", width: 125, dataIndex: 'Fecha:date', sortable: true }
        ],
        forceFit: true,
        height: 210,
        split: true,
        region: 'north'
    });

1 个答案:

答案 0 :(得分:0)

Ext.define('Modelo', {
    extend: 'Ext.data.Model',
    proxy: {
        type: 'ajax',
        reader: 'Home/GetPagosAutorizados'
    },
    fields: [
        // set up the fields mapping into the xml doc
        // The first needs mapping, the others are very basic
        //{ name: 'Author', mapping: '@author.name' },
        { name: 'IdPago', type: 'int', mapping: 'Pagos.IdPago' }, 
        { name: 'Nombre', type: 'string', mapping: 'Cliente.Nombre' },
        { name: 'Monto', type: 'float', mapping: 'Pagos.Monto' },
        { name: 'Comision', type: 'int', mapping: 'Cliente.Comision' },
        { name: 'Autorizacion', type: 'bool', mapping: 'Pagos.Autorizacion' },
        { name: 'Comentario', type: 'string', mapping: 'Pagos.Comentario' },
        { name: 'Fecha', type: 'string', mapping: 'Pagos.Fecha' }
    ]
});


var grid = Ext.create('Ext.grid.Panel', {        
    bufferedRenderer: false,
    store: store,
    columns: [
        { text: "ID Pago", width: 120, dataIndex: 'IdPago', sortable: true },
        { text: "Nombre", width: 120, dataIndex: 'Nombre', sortable: true },
        { text: "Monto", width: 125, dataIndex: 'Monto', sortable: true },
        { text: "Comision", width: 125, dataIndex: 'Comision', sortable: true },
        { text: "Autorización", width: 125, dataIndex: 'Autorizacion', sortable: true },
        { text: "Comentario", width: 125, dataIndex: 'Comentario', sortable: true },
        { text: 'Fecha', dataIndex: 'Fecha'  }
    ],
    //forceFit: true,
    height: 210,
    //split: true,
    region: 'north'
});