extjs6布局运行失败..边框布局,中心区域,vbox内部的hbox

时间:2017-05-18 12:58:44

标签: extjs layout

在我的extjs6版本6.0.0.640项目中,当我填充网格和图表时,布局运行失败。 我的面板布局设置为边框。在中心区域,我有一个合适的布局。然后尝试有3行,但在我要放入hbox的其中一行中。到目前为止,我的布局是这样的。如果我删除hbox它可以工作,但我想在我的一行中放入多个项目。

Ext.define('ExtApplication4.view.historical.Historical', {
extend: 'Ext.panel.Panel',

xtype: 'app-historical',
controller: 'historical',
itemId: 'historicalItemId',

requires: [
    'ExtApplication4.view.historical.HistoricalController',
    'ExtApplication4.util.GlobalVar',
    'Ext.chart.*'
],

title: 'Historical',

layout: {
    type: 'border'
},

defaults: {
    split: true,
    bodyPadding: 15
},

items: [
    {
        title: 'Accounts',
        region: 'west',
        margin: '5 0 0 0',
        width: 100,
        //html: 'this is the menu account area',
        dockedItems: [
        {
            xtype: 'toolbar',
            dock: 'left',
            //cls: 'myBgCls',
            style: 'padding: 0; margin: 0;'
            //items: [
            //    {
            //        xtype: 'combobox',
            //        itemId: 'comboboxClientItemID',
            //        emptyText: 'Select Client...',
            //        editable: false,
            //        displayField: 'clientName',
            //        valueField: 'clientName',
            //        bind: {
            //            store: '{myClientListStore}',
            //            selection: '{selectedClientListModel}'
            //        },
            //        listeners: {
            //            select: 'onComboboxSelect'
            //        },
            //        queryMode: "local"
            //    }
            //]
        }
        ]
    },
    {
        title: 'Main Content',
        region: 'center',
        layout: {
            type: 'fit'
        },
        items: [
            {
                layout: {
                    type: 'vbox',
                    align: 'stretch'
                },
                items: [
                    {
                        xtype: 'button'                            
                    },
                    {
                        flex: 1,
                        title: 'Sector',
                        xtype: 'grid',
                        ui: 'featuredpanel-framed',
                        itemId: 'attributionSectorGridID',
                        cls: 'custom-grid',
                        margin: '0px 0px 0px 0px',
                        bind: {
                            store: '{myAttributionGroupedStore}'
                        },
                        columns: [
                            {
                                header: 'Sector',
                                dataIndex: 'Sector',
                                flex: 1
                            },
                            {
                                header: 'P&L',
                                dataIndex: 'DailyPL',
                                renderer: function (value) {
                                    var newVal;
                                    var calc = value.toFixed(0).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
                                    if (value > 0) {
                                        newVal = '<span style="color:green">' + "$" + calc + '</span>';
                                    } else if (value < 0) {
                                        newVal = '<span style="color:red">' + "$" + calc + '</span>';
                                    } else {
                                        newVal = "$" + calc;
                                    }
                                    return newVal;
                                },
                                align: 'right',
                                flex: 1
                            }
                        ]
                    },
                    {
                        xtype: 'panel',
                        flex: 3,
                        layout: { 
                            type: 'hbox',
                            align: 'stretch'
                        },
                        items: [
                            {                                    
                                title: 'Winners',
                                xtype: 'grid',
                                ui: 'featuredpanel-framed',
                                itemId: 'attributionWinnersGridID',
                                cls: 'custom-grid',
                                margin: '5px 0px 0px 0px',
                                bind: {
                                    store: '{myAttributionWinnersStore}'
                                },
                                columns: [
                                    {
                                        header: 'Sector',
                                        dataIndex: 'Sector',
                                        flex: 1
                                    },
                                    {
                                        header: 'Market',
                                        dataIndex: 'ShortDesc',
                                        flex: 1
                                    },
                                    {
                                        header: 'P&L',
                                        dataIndex: 'DailyPl',
                                        renderer: function (value) {
                                            var newVal;
                                            var calc = value.toFixed(0).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
                                            if (value > 0) {
                                                newVal = '<span style="color:green">' + "$" + calc + '</span>';
                                            } else if (value < 0) {
                                                newVal = '<span style="color:red">' + "$" + calc + '</span>';
                                            } else {
                                                newVal = "$" + calc;
                                            }
                                            return newVal;
                                        },
                                        align: 'right',
                                        flex: 1
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

});

1 个答案:

答案 0 :(得分:1)

如果在添加hbox布局后“布局运行失败”,请检查您添加了hbox布局的容器的所有项目。 hbox布局中的项目需要宽度,可以是固定宽度,百分比或使用flex(后者仅在容器的宽度可以从某处派生时才有效)。

在您的情况下,网格似乎没有宽度。通常,网格宽度将通过将所有列宽度(列的默认宽度为100)相加来计算,但由于至少有一列具有flex集,因此在您的情况下这不起作用。 / p>

同样,如果在添加vbox布局后失败,则具有所述布局的容器中的一个项目没有高度。