2011-05-30 9 views
19

gerçek giriş kutusunun daha geniş olması bir ExtJS (versiyon 4) ComboBox'ın açılan menüden genişliğini ayarlamak için herhangi bir yolu var mı?ExtJS ComboBox açılır kutu genişliği, giriş kutusu genişliğinden daha geniştir?

Ben 200px etrafında olmak istediğiniz bir comboxbox var ama sonuç açılır listesini disk belleği ve bu genişlik tüm çağrı barın kontrollerini göstermek için bile yeterince büyük değil. Bu iki bölümü vardır

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

Kod snippet'inizin – Ibu

+0

soru –

cevap

35

:

İşte combo oluşturmak için benim kod. Öncelikle, combobox yapılandırmanızda matchFieldWidth: false değerini ayarlamanız gerekir. Ardından, ana yapılandırmada combobox'ın kendisinin genişliğini belirlerken listConfig bölümündeki genişlik niteliklerini yalnızca açılır menüye göre stil belirtebilirsiniz.

Bu sadece listWidth özelliğini belirtmek izin geçirgen sürümü değişir.

+0

mükemmel, teşekkür için kodumu eklendi göstermek! –

+0

Bilgi paylaştığınız için teşekkürler Simon. – netemp

+0

Merhaba Simon, Bu çözümü uyguladım ve şablon için daha fazla genişliğe izin vermesine rağmen, şimdi değerler listesi görüntülenmiyor. could - http://stackoverflow.com/questions/7526232/extjs-4-how-to-display-template-having-width-greater-than-the-width-of-combo-bo - Burada soru gönderdiniz herhangi bir fikir varsa bu konuda rehberlik. Şimdiden teşekkürler. – netemp

3

Dinamik 'matchFieldWidth' özelliğini değiştirmek için bir yol bulamadık. Bu yüzden başka bir çözüm bulundu:

{ 
    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; 
     } 
    } 
    } 
} 

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