ExtJs Grid в выпуске «Автоматическая подгонка TabPanel» - PullRequest
3 голосов
/ 21 февраля 2011

У меня проблемы с рендерингом сетки на панели вкладок (это сделано с Ext Designer.). иерархия выглядит следующим образом, Viewport. -> tabPanel -> Панель -> Контейнер -> Сетка.

Вот как это отображается сейчас how its displayed now.

Вот код для окна просмотра

mainWindowUi = Ext.extend(Ext.Viewport, {
layout: 'border',
id: 'mainWindow',
initComponent: function() {
    this.items = [
        {
            xtype: 'panel',
            title: 'Navigation',
            region: 'west',
            width: 200,
            frame: true,
            split: true,
            titleCollapse: true,
            collapsible: true,
            id: 'navigation',
            items: [
                {
                    flex: 1,
                    xtype: 'mytreepanel'
                }
            ]
        },
        {
            xtype: 'tabpanel',
            layoutOnTabChange: true,
            resizeTabs: true,
            defaults: {
                layout: 'fit',
                autoScroll: true
            },
            region: 'center',
            tpl: '',
            id: 'mainTabPanel',
            layoutConfig: {
                deferredRender: true
            }
        }
    ];
    mainWindowUi.superclass.initComponent.call(this);
}
});

вот код для создания вкладки .. (создан из панели навигации программно)

var currentTab = tabPanel.findById(node.id);
            // If not yet created, create the tab
            if (!currentTab){
                currentTab = tabPanel.add({
                    title:node.id,
                    id:node.id,
                    closable:true,
                    items:[{
                        xtype: 'phasePanel',
                        layout: 'fit',
                        autoscroll: true,
                        }],
                        autoScroll:true,

                });
            }
            // Activate tab
            tabPanel.setActiveTab(currentTab);

вот код для панели / контейнера / сетки

PhasePanelUi = Ext.extend(Ext.Panel, {
frame: true,
layout: 'anchor',
autoScroll: true,
autoWidth: true,
defaults: '',
initComponent: function() {
    this.items = [
        {
            xtype: 'container',
            autoScroll: true,
            layout: 'fit',
            defaults: {
                layout: 'fit',
                autoScroll: true
            },
            id: 'gridHolder',
            items: [
                {
                    xtype: 'grid',
                    title: 'Current Phases',
                    store: 'PhaseStore',
                    autoDestroy: false,
                    viewConfig: '',
                    deferRowRender: false,
                    autoLoad: '',
                    ref: '../phaseGrid',
                    id: 'phaseGrid',
                    columns: [
                        {
                            xtype: 'gridcolumn',
                            header: 'Name',
                            dataIndex: 'name',
                            sortable: true,
                            width: 200
                        },
                        {
                            xtype: 'gridcolumn',
                            header: 'Estate',
                            dataIndex: 'estate_name',
                            sortable: true,
                            width: 500
                        }
                    ]
                }
            ]
        }
    ];
    PhasePanelUi.superclass.initComponent.call(this);
}
});

Я перепробовал все виды комбинаций. но я просто не могу заставить сетку правильно отображать любую помощь.

Ответы [ 3 ]

3 голосов
/ 23 февраля 2011

Ваша текущая вкладка также нуждается в макете 'fit' ... вы дали фазовой панели макет 'fit', а контейнеру в пределах phasePanel макет 'fit', но вы не дали текущей вкладке макет ' подходят»...

Макет относится к тому, как дочерние элементы будут размещены в контейнере ... а не к тому, как элемент помещается в его контейнер. Поэтому, если вы хотите, чтобы элемент помещался в его контейнере, установите расположение: «вписывать» в контейнер, а не в элемент.

1 голос
/ 24 февраля 2011

Вы должны установить в сетке autoHeight: true

                    xtype: 'grid',
                    title: 'Current Phases',
                    autoHeight: true,
                    store: 'PhaseStore',
                    autoDestroy: false,
                    viewConfig: '',
                    deferRowRender: false,
                    autoLoad: '',
                    ref: '../phaseGrid',
                    id: 'phaseGrid',

И вы можете установить в gridView атрибуты autoFill и forceFit.

0 голосов
/ 24 февраля 2011

Кажется, я решил проблему.

Я полностью удалил бит макета из динамической вкладки.Я думаю, теперь он просто выбирает макет из значений по умолчанию.(все еще своеобразное поведение: S)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...