Изменение размера Dgrid в BorderContainer

У меня есть dgrid в BorderContainer с включенным "liveSplitters" (с помощью Dojo 1.8). Dgrid выглядит хорошо, но когда я перемещаю разделитель между левым столбцом и "ведущим" столбцом (внутри которого находится dgrid), размер dgrid не изменяется должным образом. Однако, если я немного изменим размер окна, то dgrid вернется к нужному размеру (т.е. заполняет 100% "ведущей" панели BorderContainer).

Я установил dgrid на 100% ширину в CSS. Есть ли какой-то способ, которым я должен сказать dgrid обновить его размер после перемещения сплиттера?

2 ответа

Посмотрите на этот пример, который я написал, отвечая на другой dgrid связанный вопрос: http://jsfiddle.net/phusick/VjJBT/

Правило CSS, которое вы ищете:

#grid {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    height: auto;
}

РЕДАКТИРОВАТЬ: Я думал, что это может быть проблемой dgrid версия, поэтому я обновил свой dgrid до последней версии 0.3.3 и создал тест для вашей проблемы: http://jsfiddle.net/phusick/5mHTS/.

Ну, это не было проблемой версий, и 0.3.1 и 0.3.3 прекрасно работают при изменении размера BorderContainer, но только в Chrome и Firefox. Я воспроизвел проблему в IE9 и Opera 12.10:

Сетка должна вызывать grid.resize() правильно изменить размер, чего не происходит в IE9/Opera, при изменении размера BorderContainer, но происходит всегда, когда вы изменяете размер окна.

DijitRegistry решает проблему, потому что компоненты макета, такие как BorderContainer а также ContentPane, вызов resize() на всех их диджит детей, когда изменился размер.

Так что либо подкласс DijitRegistry или же dojo/aspect Слушай resize на родителя ContentPane сетки и вызвать grid::resize():

aspect.after(contentPane, "resize", function() {
    grid.resize();
});

Как отмечено в комментариях к ответу @phusick, Dgrid изменяет размеры должным образом, если я использую миксин DijitRegistry. У меня были и другие проблемы с изменением размера, но они были связаны с тем, что в моем CSS была установлена ​​относительная ширина элемента (например, 100%). Если я удаляю размер, который все равно не требуется ContentPanel, все элементы изменяют размер в порядке. CSS был перенесен из Dojo 1.5, который явно не реагировал на ContentPanel с размером, установленным в CSS.

Другие вопросы по тегам