2013-03-23 20 views
5

Ho un Ext.panel.Panel in cui voglio aggiungere dinamicamente altri pannelli "più piccoli" che rappresentano "cose" differenti nella mia applicazione. Questo pannello si trova nella parte superiore di una griglia ed ha la stessa larghezza della griglia. Quando un pannello "più piccolo" viene aggiunto dinamicamente a questo "pannello contenitore", voglio che i pannelli vengano aggiunti orizzontalmente e poi verticalmente se la larghezza totale di tutti i pannelli "piccoli" è maggiore della larghezza del contenitore.Layout ExtJS, Orizzontalmente crescono verticalmente

Ho provato "adatto", "hbox", "vbox", tutto.

Mi manca un tipo di layout?

+1

Hai provato a usare il layout 'auto' e solo mettendo 'display: inline-blocco-sui vostri pannelli annidati? Ti aspetti che il pannello esterno diventi più alto o è sufficiente che i pannelli interni scorrano orizzontalmente e poi verso il basso? – wantok

+0

Sicuramente mi piacerebbe che anche il pannello del contenitore crescesse. Proverò il tuo trucco per vedere se funziona, grazie! –

risposta

4

quello che cercate è generalmente noto come un layout flow, che ExtJS non ha fuori dalla scatola (se mi chiedete, è un po 'sciocco non lo fanno in quanto è un layout molto comune e in Infatti quello applicato alla maggior parte dei loro esempi di dataview, ma usando css piuttosto che un layout).

Ma è possibile ottenere facilmente utilizzando il layout di colonna senza columnWidth definito. Copia 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

Ora che torno al mio lavoro ... vedrò questo ... grazie! –

+0

Questo mi fa diventare parte di ciò ... sto aggiungendo le cose in modo dinamico (non durante la configurazione) ... devo conoscere la mia dimensione della larghezza prima di aggiungerla? –

+0

La larghezza del contenitore o degli articoli? – Izhaki

5

ho trovato che quando si utilizza l'esempio precedente in ExtJS 4.2.2 i pannelli sono stati impilati verticalmente.

avevo bisogno di aggiungere:

style: { 
    float: 'left' 
}, 

ad ogni voce e poi tutto ha funzionato bene.

Ho eseguito il test con entrambe le configurazioni statiche (come nell'esempio precedente) e anche con l'aggiunta/rimozione dinamica (utilizzando un contenitore personalizzato per ogni articolo figlio). Il pannello del contenitore ripetuto ogni volta in modo simile al flusso. Correggere anche durante il ridimensionamento della finestra del browser: gli elementi secondari spostati per adattarsi alle nuove dimensioni del pannello.

Murray

+0

funziona solo per gli elementi dinamici su 4.2.2? Ho provato, ma non funziona su 3.x – sidgate

+0

Funziona per la 4.2.2 in combinazione con la colonna loyout – monstergold

+0

non posso ringraziarti abbastanza :) – mcabral

Problemi correlati