extjs嵌套数据未显示在databind网格中

时间:2019-01-29 21:08:06

标签: extjs data-binding grid

如何使用从webapi ef创建的以下格式对extjs6网格进行数据绑定以包括“佣金”?

网格列应如下所示。

title: 'Commissions',
xtype: 'grid',
bind: {
store: '{myAccountDetails.commission}'
},
ui: 'featuredpanel-framed',
cls: 'custom-grid',
margin: '0 0 0 0',
itemId: 'gridCommId',
collapsible: true,
columns: [
{
header: 'USD',
dataIndex: 'usd',
flex: 1
},
{
header: 'AUD',
dataIndex: 'aud',
flex: 1
},
{
header: 'CAD',
dataIndex: 'cad',
flex: 1
}

screenshot 这是我对网格的看法

我所附的屏幕截图是myAccountDetails

任何帮助将不胜感激!

只是一个旁注...如果添加标签,我可以返回我要查找的信息,但我希望它位于网格内。

                    xtype: 'label',
                    cls: 'myLabelCRM2',
                    bind: {
                        text: '{myAccountDetails.commission.aud}'
                    }

1 个答案:

答案 0 :(得分:1)

最好的方法是在viewmodel中定义一个存储,然后使用小胡子语法将其数据字段直接绑定到detail commision字段。

Ext.define('MyView', {
    viewModel: {
        data: {
            myAccountDetails: {
                accountName: 'foo',
                commision: {
                    aud: 7,
                    cad: 8,
                    usd: 9
                }
            }
        },
        stores: {
            commisionStore: {
                fields: ['aud', 'cad', 'usd'],
                data: '{myAccountDetails.commision}'
            }
        }
    },

    extend: 'Ext.grid.Panel',
    xtype: 'MyView',
    bind: {
        store: '{commisionStore}'
    },
    columns: [{
        header: 'USD',
        dataIndex: 'usd',
        flex: 1
    }, {
        header: 'AUD',
        dataIndex: 'aud',
        flex: 1
    }, {
        header: 'CAD',
        dataIndex: 'cad',
        flex: 1
    }]
});

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create({
            xtype: 'MyView',
            width: 300,
            height: 300,
            renderTo: Ext.getBody()
        });
    }
});