Полоса прокрутки ExtJS GridPanel не отображается в IE7, но отображается в Firefox и т. Д. - PullRequest
2 голосов
/ 28 января 2010

Настройка

У меня есть макет аккордеона, содержащий панель «Свойства», в которую вложены две внутренние панели. Первая внутренняя панель содержит Ext.DataView, а вторая панель - Ext.grid.GridPanel, о которой идет речь. На приведенном ниже снимке экрана пустое пространство, содержащее значок папки, представляет собой вид данных, а под ним - панель сетки.

Проблема

В Firefox, Chrome и Opera есть полоса прокрутки, которая появляется, когда моя сеточная панель имеет переполнение свойств. Только в Internet Explorer он не отображается. Однако я могу прокручивать свою кнопку прокрутки мыши во всех браузерах, включая IE.

alt text

Я также пытался удалить наш пользовательский файл CSS, если он как-то на него влиял, но в этом не было никаких изменений.

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

var mainPanel = new Ext.Panel({
    id : 'main-property-panel',
    title : 'Properties',
    height : 350,
    autoWidth : true,
    tbar : [comboPropertyActions],
    items : [panel1] //panel1 holds the DataView
});

var propertiesGrid = new Ext.grid.GridPanel({
    stripeRows : true,
    height : mainPanel.getSize().height-iconDataView.getSize().height-mainPanel.getFrameHeight(),
    autoWidth : true,
    store : propertiesStore,
    cm : propertiesColumnModel
})

//Add gridpanel to mainPanel
mainPanel.add(propertiesGrid);
mainPanel.doLayout();

Любая помощь в правильном направлении будет принята с благодарностью. Спасибо.

Ответы [ 3 ]

1 голос
/ 29 января 2010

Моим решением этой проблемы было удаление autoWidth : true из моей конфигурации gridpanel. Вместо этого я вручную устанавливаю значение ширины и имею функцию изменения высоты и ширины панели сетки при изменении размера тела панели свойств. Ниже приведен мой измененный код, а также функция для ручной установки размера панели сетки при изменении ширины и высоты панели свойств.

var propertiesGrid = new Ext.grid.GridPanel({

    stripeRows : true,
    height : mainPanel.getSize().height-iconDataView.getSize().height-mainPanel.getFrameHeight(),
    width : mainPanel.getSize().width,
    store : propertiesStore,
    cm : propertiesColumnModel

})

//Add gridpanel to mainPanel
mainPanel.add(propertiesGrid);
mainPanel.doLayout();

mainPanel.on('bodyresize', function() {

    //propertiesGrid.setSize(Width, Height);
    propertiesGrid.setSize(mainPanel.getSize().width, 
    mainPanel.getSize().height-iconDataView.getSize().height-mainPanel.getFrameHeight());

});

Спасибо всем за помощь!

0 голосов
/ 24 марта 2012

Я уверен, что нашел гораздо лучшее и более простое решение. Просто установите width и height на '100%' следующим образом:

width: '100%',
height: '100%'

при создании Ext.grid.Panel.

Я отвечаю на такой старый вопрос, потому что это первый вопрос, который вы получаете при поиске в Google.

0 голосов
/ 28 января 2010

Появляется ли полоса прокрутки, если вы изменяете размер / скрываете / показываете панель? Если это так, это может быть проблемой IE hasLayout. Если нет, то это скорее всего проблема с вашим макетом (или, возможно, ошибкой Ext). Трудно сказать что-либо из того, что вы опубликовали. Вы спрашивали на форумах Ext?

Для подобных вещей я обычно стараюсь систематически сокращать код до наименьшего возможного размера, который все еще показывает проблему. Это часто приводит людей к поиску собственных проблем, если это действительно проблема конфигурации. Но, по крайней мере (так как ваш пример работает во всем, кроме IE, конфигурация, вероятно, в порядке), кому-то еще будет намного проще взглянуть и попытаться воспроизвести проблему.

...