2011-05-30 37 views
19

¿Hay alguna forma de establecer el ancho del menú desplegable de ComboBox ExtJS (versión 4) para que sea más ancho que el del cuadro de entrada real?ExtJS ComboBox ancho desplegable más ancho que el ancho del cuadro de entrada?

Tengo un comboxbox que quiero tener alrededor de 200px pero tengo paginación en el menú desplegable de resultados y ese ancho no es ni siquiera lo suficientemente grande como para mostrar todos los controles de la barra de búsqueda.

Aquí está mi código para crear el combo:

var add_combo = Ext.create('Ext.form.field.ComboBox', 
    { 
     id    : 'gbl_add_combo', 
     store   : Ext.create('Ext.data.Store', 
     { 
      remoteFilter : true, 
      fields : ['gb_id', 'title'], 
      proxy : 
      { 
       type  : 'ajax', 
       url   : 'index.php/store/get_items', 
       reader  : 
       { 
        type   : 'json', 
        root   : 'records', 
        totalProperty : 'total', 
        successProperty : 'success' 
       }, 
       actionMethods : 
       { 
        read : 'POST', 
        create : 'POST', 
        update : 'POST', 
        destroy : 'POST' 
       } 
      } 
     }), 
     listConfig: 
     { 
      loadingText: 'Searching...', 
      emptyText: 'No results found' 
     }, 
     queryMode  : 'remote', 
     hideLabel  : true, 
     displayField : 'title', 
     valueField  : 'gb_id', 
     typeAhead  : true, 
     hideTrigger  : true, 
     emptyText  : 'Start typing...', 
     selectOnFocus : true, 
     width   : 225, 
     minChars  : 3, 
     cls    : 'header_combo', 
     pageSize  : 15 
    }); 
+0

mostrar su fragmento de código – Ibu

+0

añadió mi código a la pregunta –

Respuesta

35

Hay dos partes en este. En primer lugar, debe configurar matchFieldWidth: false en la configuración de su combobox. A continuación, puede especificar los atributos de ancho en la sección listConfig para diseñar solo el menú desplegable, al tiempo que especifica el ancho del cuadro combinado en la configuración principal.

Esto varía de la versión anterior, que solo le permite especificar la propiedad listWidth.

+0

perfecta, gracias! –

+0

Gracias por compartir la información Simon. – netemp

+0

Hola Simon, apliqué esta solución, y aunque permitió un mayor ancho para la plantilla, la lista de valores no se muestra ahora. He publicado la pregunta aquí - http://stackoverflow.com/questions/7526232/extjs-4-how-to-display-template-having-width-greater-than-the-width-of-combo-bo - could usted guía en esto si alguna idea. Gracias por adelantado. – netemp

3

No encontré la manera de cambiar dinámicamente la propiedad 'matchFieldWidth'. Así que encontré otra solución:

{ 
    xtype: 'combobox', 
    fieldLabel: 'Short Options', 
    queryMode: 'local', 
    store: ['Yes', 'No', 'Maybe'], 
    matchFieldWidth: false, 
    listConfig: { 
    listeners: { 
     beforeshow: function(picker) { 
     picker.minWidth = picker.up('combobox').getSize().width; 
     } 
    } 
    } 
} 

Fuente: http://www.sencha.com/forum/showthread.php?293120-Setting-BoundList-minWidth-to-the-width-of-a-parent-ComboBox-without-matchFieldWidth

Cuestiones relacionadas