2012-01-16 15 views
5

Ürün miktarını görüntüleyen birleşik kutum var. Ürün miktarı seçimine göre, öğenin fiyat değerini görüntüliyorum. Varsayılan olarak, fiyat değerini ilk ürün değerine ayarlıyorum. i sayfayı yüklemek Ancak, benim açılan kutu 100.extjs'deki açılır menüden (Combo box) ön seçim değeri?

enter image description here

Problem yani ilk öğe qty görüntülemek istediğiniz: 100 yerine boş

Yani ben bir mağaza tanımladık yükleme: Bu Adet yüklenmesi gereken

Store = new Ext.data.JsonStore({ 
     storeId: 'Store', 
     root: 'storevalue', 
     autoLoad: false, 
     baseParams: { itemid: '${itemID!""}', 
         adjustPrice: '${adjustPrice}', 
         overrideShowPrice: '${overrideShowPrice}' }, 
     url: 'ListQtyPrice.epm', 
     fields: [ 'qty', 'rawprice', 'displayPrice' ] 
    }); 

açılan kutu

<#if Select> 
     new DBEComboBox({ 
      name: 'orderqty', 
      displayField: 'qty', 
      valueField: 'qty', 
      id: 'order-qty', 
      store: Store, 
      forceSelection: true, 
      mode: 'remote', 
      triggerAction: 'all', 
      allowBlank: true, 
      listWidth: 202, 
      triggerClass: 'orderqty-trigger', 
      width: 200 
      ,defaultValue: 100 
      ,listeners: { 
       // for price adjustments 
      } 
     }); 
     </#if> 


Store.load({ 
      callback: function() { 
      alert("reached"); 
      Ext.getCmp('order-qty').setValue(Store.getAt(0).get('qty')); 
      var oqc = Ext.getCmp('order-qty'); 
      var value = Ext.getCmp('order-qty').getValue(); 
      alert(" hey :" +value); 
      } 
     }); 
Miktar gösterilecek

Uyarı bildirimlerinde hey: 100'ü görebilmeyi mümkün kılar.

cevap

7

Bu soruna birkaç kez rastlıyorum. Bu sorunu çözdüğüm tek yol, mağaza yüklendikten sonra açılan kutuda setValue'u aramaktı, mağazaya bir dinleyici ekleyebiliyorsunuz, ancak bu her zaman bana biraz dağınık görünüyordu. Genellikle böyle tek başına bir olay dinleyicisi var:

Store.on('load',function(store) { 
    Ext.getCmp('order-qty').setValue(store.getAt('0').get('qty')); 
}); 

DÜZENLEME: 18 Ocak Burada bahsedilen varsayılan bir değer set edilir ComboBox çalışan bir örnek olduğu kabul edilebilir olarak 2012

. Bu ExtJS 4.02 kullanılarak yapılır, 4.07 ile gayet iyi çalışmalı, 4.1 hakkında emin değilim.

aksi sadece aynı dizin düzeyinde açılan-örnek ve Data.JSON hem koymak ve onlar iyi çalışmalıdır, bağlantılar (html üstündeki parantez bakınız) Doğru extjs yolu koymak emin olun:

Data.JSON:

[ 
    {"value":1,"name":"Option 1"}, 
    {"value":2,"name":"Option 2"}, 
    {"value":3,"name":"Option 3"} 
] 

birleşik-example.html:

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
     <title>Combo Box Example</title> 
    <link rel="stylesheet" type="text/css" href="[your extjs path]/resources/css/ext-all.css"> 

    <script type="text/javascript" src="[your extjs path]/ext-all.js"></script> 
    <script type="text/javascript" > 

    Ext.onReady(function() { 

     // the datastore 
     var myStore = new Ext.data.Store({ 
      fields: ['value', 'name'], 
      proxy: { 
       type: 'ajax', 
       url : 'data.json', 
       reader: { 
        type: 'json' 
       } 
      }, 
      autoLoad: true 
     }); 

     // a window to hold the combobox inside of a form 
     myWindow = Ext.create('Ext.Window', { 
      title: 'A Simple Window', 
      width: 300, 
      constrain: true, 
      modal: true, 
      layout: 'fit', 
      items: [{ 
       // the form to hold the combobox 
       xtype: 'form', 
       border: false, 
       fieldDefaults: { 
        labelWidth: 75 
       }, 
       bodyPadding: '15 10 10 10', 
       items: [{ 
        // the combobox 
        xtype: 'combo', 
        id: 'myCombo', 
        fieldLabel: 'A Label', 
        valueField: 'value', 
        displayField: 'name', 
        store: myStore, 
        //queryMode: 'local', 
        typeAhead: true, 
        forceSelection: true, 
        allowBlank: false, 
        anchor: '100%' 
       },{ 
        // shows the selected value when pressed 
        xtype: 'button', 
        margin: '10 0 0 100', 
        text: 'OK', 
        handler: function() { 
         alert('Name: ' + Ext.getCmp('myCombo').getRawValue() + 
           '\nValue: ' + Ext.getCmp('myCombo').value); 
        } 
       }] 
      }] 
     }); 
     // show the window 
     myWindow.show(); 

     // function to give the combobox a default value 
     myStore.on('load',function(store) { 
      Ext.getCmp('myCombo').setValue(store.getAt('0').get('value')); 
     }); 

    }); 

    </script> 

    </head> 
    <body> 
    </body> 
</html> 
+0

aynı hatlar (1) boyunca bir çözelti göndermek için olacaktı. Mad-D, Geronimo'nun snippet'inin mağazaya yapılan herhangi bir yükten ÖNCE olduğundan emin olmalısınız. Hala işe yaramadıysa, ateşböceğinde herhangi bir hata var mı? Mağazanın yüklendikten sonra gerçekten kayıtlarının olduğunu doğrulayabilir misiniz? –

+0

Bu her zaman benim için iyi çalışıyor ... Bu ExtJS ** 4 ** için mi? Mağazanız ve açılan kutunuz hala yukarıdakiyle aynı şekilde yapılandırıldı mı? Yukarıdaki örneği diğer tüm işlevlerin dışında eklediniz, ancak Ext.onReady'nin içinde mi? Eğer bu konuda basit olmak istiyorsanız (ama hiç de dinamik değil) her zaman combobox'a bir 'value' config ekleyebiliriz:' 'value: '100'' veya' value: 100' – Geronimo

+0

bunları denedim 1 'store.getAt (' 0 '). get (' qty '))' uyarısı ve beklenen değeri 100 olarak aldım ancak varsayılan değeri ayarlamadı. '100' ve değer: 100 o tetik –

İlgili konular