Dojo dijit layout ContentPane с разделителем - программно меняет ориентацию региона

47
3

Я использую две панели (сетку и детали) в качестве шаблона мастер-данных. Теперь я пытаюсь создать кнопку "Детали справа" или "Детали внизу". Я делаю это, изменяя атрибут области ContentPane, например:

function toggleDetails() {
if(dijit.byId("Details").region == "right") {
dijit.byId("Details").set("region", "bottom");
dojo.byId("Details").style.height = "200px";
}
else {
dijit.byId("Details").set("region", "right");
dojo.byId("Details").style.width = "400px";
}
dijit.byId("DetailsParent").resize();
}

Сами панели меняются хорошо. Проблема в том, что у меня есть сплиттер для панели сведений. При переключении сплиттер подходит для исходной ориентации, но не корректно отображает альтернативную ориентацию. Любое решение для обновления ориентации разделителя на основе области contentPane?

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

спросил(а) 2012-09-03T17:41:00+04:00 7 лет, 4 месяца назад
1
Решение
59

Возможным решением может быть использование removeChild и addChild, как в этом примере

        if (isVertical) {

// vertical layout

this.ap_MainContainer.removeChild(this.ap_TopContainer);

this.ap_TopContainer.region = 'top';

this.ap_MainContainer.addChild(this.ap_TopContainer);

} else {

// horizontal layout

this.ap_MainContainer.removeChild(this.ap_TopContainer);

this.ap_TopContainer.region = 'left';

this.ap_MainContainer.addChild(this.ap_TopContainer);
}

ответил(а) 2016-07-05T08:46:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема