Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

extjs gridpanel inside a panel not autoscroll or resize

Tags:

extjs

extjs4

I have a tabpanel. In the tab, i have a panel which includes a toolbar and 3 items: [ fieldset, a gridpanel, and another fieldset (or some buttons)]. I cannot get the gridpanel to show scroll bar. It only works if i set the maxheight/minheight of the gridpanel.
I also tried wrapping gridpanel inside a container. No luck. In the example, i use fit layout. I tried "anchor" layout, and assigned anchor:'100% 50%' to gridpanel, hoping that it would resize when i resize browser. No luck.

Alternatively, if gridpanel is the ONLY item in the tab, autoscroll would work. So it appears when it's inside another panel, autoscroll/ resizing does not work.

Did I miss something here ?

Ext.application({
    name: 'MyApp',
    launch: function () {

        // create the data store
        var d = ['company', 100];
        var myData = [];
        for (var i = 0; i < 50; i++) {
            myData[i] = d;
        }
        var store = Ext.create('Ext.data.ArrayStore', {
            fields: [{
                name: 'company'
            }, {
                name: 'price',
                type: 'float'
            }],
            data: myData
        });

        Ext.create("Ext.container.Viewport", {
            layout: {
                type: 'border'
            },
            items: [{
                xtype: 'toolbar',
                id: 'headerbar',
                region: 'north',
                height: 30
            }, {
                xtype: 'toolbar',
                id: 'menubar',
                region: 'north',
                height: 30
            }, {
                xtype: 'tabpanel',
                itemId: 'maintabpanel',
                activeTab: 0,
                region: 'center',
                plain: true,
                margins: '5 5 5 5',
                layout: 'fit',
                items: [{
                    closable: false,
                    title: 'Tab',
                    margins: '0 0 0 0',
                    items: [{
                        xtype: 'panel',
                        title: 'Panel',
                        layout: 'fit',
                        tools: [{
                            type: 'help',
                            tooltip: 'Help'
                        }, {
                            type: 'close',
                            tooltip: 'Close'
                        }],
                        items: [{
                            xtype: 'fieldset',
                            title: 'Field Set',
                            layout: 'hbox',
                            items: [{
                                xtype: 'textfield',
                                fieldLabel: 'Input'
                            }]
                        }, {
                            xtype: 'gridpanel',
                            autoScroll: true,
                            store: store,
                            columns: [{
                                text: 'Company',
                                flex: 1,
                                sortable: true,
                                dataIndex: 'company'
                            }, {
                                text: 'Price',
                                flex: 1,
                                sortable: true,
                                dataIndex: 'price'
                            }],
                            viewConfig: {
                                autoFit: true
                            }
                        }, {
                            xtype: 'fieldset',
                            title: 'Field Set 2',
                            layout: 'hbox',
                            items: [{
                                xtype: 'textfield',
                                fieldLabel: 'Output'
                            }]
                        }]

                    }]
                }]
            }, {
                xtype: 'box',
                id: 'footer',
                region: 'south',
                html: '<h1> Copyright 2012</h1>',
                height: 30
            }]
        });
    }
});
like image 691
M F Avatar asked Nov 04 '22 18:11

M F


1 Answers

Note that the parent panel of the gridpanel has fit layout, yet it has more than 1 item (the fieldset, the gridpanel, and another fieldset). A fit layout can only have 1 child.

Also, the parent of that fit panel (the one with closable : false - the tab) has no layout definition.

Here's a JsFiddle modified version of your code that works.

like image 107
Izhaki Avatar answered Nov 08 '22 07:11

Izhaki