2011-03-07 8 views
9

El código ExtJS siguientes crea dos regiones a la izquierda ya la derecha del uno al otro, así:¿Cómo alineo las dos áreas superiores en un diseño de tabla ExtJS?

enter image description here

¿Qué tengo que cambiar a este código de manera que las dos zonas están alineados arriba?

<script type="text/javascript"> 

    var template_topbottom_top = new Ext.Panel({ 
     frame: false, 
     border: false, 
     header: false, 
     items: [] 
    }); 

    var template_topbottom_bottom = new Ext.Panel({ 
     frame: false, 
     border: false, 
     header: false, 
     items: [] 
    });  

    var template_topbottom = new Ext.Panel({ 
     id:'template_topbottom', 
     baseCls:'x-plain', 
     renderTo: Ext.getBody(), 
     layout:'table', 
     layoutConfig: {columns:2}, 
     defaults: { 
      frame:true, 
      style: 'margin: 10px 0 0 10px; vertical-align: top' //doesn't work 
     }, 
     items:[{ 
       width: 210, 
       height: 300, 
       frame: false, 
       border: true, 
       header: false, 
       items: [template_topbottom_top] 
      },{ 
       width: 1210, 
       height: 200, 
       frame: false, 
       border: true, 
       header: false, 
       items: [template_topbottom_bottom] 
      } 
     ] 
    }); 

    replaceComponentContent(targetRegion, template_topbottom, true); 

</script> 
+0

Un consejo: está sobreanimando sus componentes. Tus 'items' en' template_topbottom' deben hacer referencia 'template_topbottom_top' y' template_topbottom_bottom' directamente en lugar de crear un nuevo 'items' y ponerlos como el panel solitario en esa matriz. Además, cuando sus artículos contienen un solo componente, no es necesario envolverlo con una matriz. –

Respuesta

1
<style> 
    .x-table-layout td { 
      vertical-align:top; 
    } 
</style> 
5

para su reutilización, me gustaría añadir un estilo de clase a su archivo CSS que siempre top-align celdas de disposición de mesa.

<style> 
    .x-table-layout-cell-top-align td.x-table-layout-cell { 
     vertical-align: top; 
    } 
</style> 

Esto es preferible a una respuesta anterior que utiliza .table-layout td como el selector CSS, porque si usted tiene una tabla dentro de esta disposición de la mesa, que el selector sería superior a alinear todas las células, no sólo los relacionados con el diseño de la mesa .

Se podría agregar esta clase a su Ext.Panel así:

new Ext.Panel({ 
    cls: 'x-table-layout-cell-top-align', 
    layout: 'table', 
    items: [ 
     ... 
    ] 
}) 

Si el panel ya tiene un atributo cls, puede agregar clases adicionales con espacios:

cls: 'my-container-cls x-table-layout-cell-top-align', 
9

En ExtJS 4, puede utilizar los tdAttrs opción de configuración:

layout: { 
    type: 'table', 
    columns: 2, 
    tdAttrs: { 
     valign: 'top' 
    } 
} 
+0

Me gusta esta opción mejor. – Guus

2
  tdAttrs : { 
       style : { 
        verticalAlign : 'top' 
       } 
      } 
Cuestiones relacionadas