2013-03-23 2 views
5

У меня есть Ext.panel.Panel, в которую я хочу динамически добавлять другие «меньшие» панели, представляющие разные «вещи» в моем приложении. Эта панель находится в верхней части сетки и имеет ту же ширину, что и сетка. Когда «меньшая» панель динамически добавляется к этой «панели контейнера», я хочу, чтобы панели добавлялись горизонтально, а затем вертикально, если общая ширина всех «маленьких» панелей больше ширины контейнера.ExtJS Layout, горизонтально растут вертикально

Я пробовал «подгонку», «hbox», «vbox», все.

Я пропустил тип макета?

+1

вы пытались с помощью «Auto» макет и просто положить 'дисплей: встроенный-block' на ваших вложенных панелей? Ожидаете ли вы, что внешняя панель на самом деле станет выше или достаточно, чтобы внутренние панели проходили поперек панели горизонтально, а затем вниз? – wantok

+0

Я определенно хотел бы, чтобы контейнерная панель тоже вырастала. Я попробую трюк, чтобы посмотреть, работает ли это, спасибо! –

ответ

4

Что вам нужно, как правило, известно как макет flow, который ExtJS не имеет из коробки (если вы спросите меня, это немного глупо, они не так, как это очень распространенный макет и в факт тот, который применяется на большинстве своих примеров dataview, но использует css, а не макет).

Но это может быть легко достигнуто с использованием расположения столбцов без columnWidth. Копирование this answer:

Ext.create('Ext.Panel', { 
     width: 500, 
     height: 280, 
     title: "ColumnLayout Panel", 
     layout: 'column', 
     renderTo: document.body, 
     items: [{ 
      xtype: 'panel', 
      title: 'First Inner Panel', 
      width: 250, 
      height: 90 
     },{ 
      xtype: 'panel', 
      title: 'Second Inner Panel', 
      width: 200, 
      height: 90 
     }, { 
      xtype: 'panel', 
      title: 'Third Inner Panel', 
      width: 150, 
      height: 90 
     }] 
    }); 

enter image description here

+0

Теперь, когда я вернусь к своей работе ... Я посмотрю на это ... спасибо! –

+0

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

+0

Ширина контейнера или предметов? – Izhaki

5

Я обнаружил, что при использовании в качестве примера выше в ExtJS 4.2.2 панели были уложены вертикально.

мне нужно добавить:

style: { 
    float: 'left' 
}, 

к каждому пункту, а затем все работало хорошо.

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

Мюррей

+0

работает ли он на динамические элементы только на 4.2.2? Я пробовал, но он не работает на 3.x – sidgate

+0

Он работает для 4.2.2 в сочетании с колонкой loyout – monstergold

+0

не может вас поблагодарить достаточно :) – mcabral

Смежные вопросы