2012-01-16 11 views
5

मेरे पास एक कॉम्बो बॉक्स है जो आइटम मात्रा प्रदर्शित करता है। आइटम मात्रा चयन के आधार पर मैं आइटम का मूल्य मान प्रदर्शित कर रहा हूं। डिफ़ॉल्ट रूप से मैं मूल्य मान को पहले आइटम मान पर सेट कर रहा हूं। हालांकि जब मैं पृष्ठ लोड, मैं अपने कॉम्बो बॉक्स यानी 100.extjs में ड्रॉपडाउन (कॉम्बो बॉक्स) से पूर्व-चयन मूल्य?

enter image description here

समस्या पहला आइटम मात्रा प्रदर्शित करना चाहते हैं: यह लोड करना चाहिए मात्रा: 100 नहीं बल्कि खाली

तो मैं एक दुकान को परिभाषित किया है लोड हो रहा है

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' ] 
    }); 

कॉम्बो बॉक्स के रूप में मात्रा

<#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); 
      } 
     }); 
प्रदर्शित करने के लिए

हे देखने के लिए सक्षम: चेतावनी बयान में 100

उत्तर

7

मैंने इस समस्या को दो बार चलाया है। वास्तव में यह हल करने का एकमात्र तरीका स्टोर के लोड होने के बाद combobox पर setValue पर कॉल करना था, आप बस स्टोर पर श्रोता जोड़ सकते थे, लेकिन यह हमेशा मेरे लिए कुछ गन्दा लग रहा था। मैं आमतौर पर इस तरह एक स्टैंड-अलोन घटना श्रोता है:

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

संपादित करें: 18 जनवरी 2012

यहाँ उल्लेख एक डिफ़ॉल्ट मान सेट किया जा रहा के साथ ComboBox की एक पूरी काम कर उदाहरण है ठीक के रूप में। यह ExtJS 4.02 का उपयोग करके किया जाता है, हालांकि 4.07 के साथ ठीक काम करना चाहिए, 4.1 के बारे में सुनिश्चित नहीं है।

सुनिश्चित करें कि आप लिंक (एचटीएमएल के शीर्ष पर कोष्ठक दिखाई) में अपने सही ExtJS पथ डाल दिया, नहीं तो सिर्फ एक ही निर्देशिका स्तर पर दोनों कॉम्बो-उदाहरण और data.json रख दिया और वे ठीक चलाना चाहिए बनाओ:

data.json:

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

कॉम्बो-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

मैं उसी तर्ज (+1) के साथ एक समाधान पोस्ट करने के लिए जा रहा था। मैड-डी, आपको यह सुनिश्चित करना होगा कि स्टोर में किसी भी लोड कॉल से पहले Geronimo का स्निपेट है। अगर यह अभी भी काम नहीं करता है, तो फायरबग में कोई त्रुटि है? क्या आप सत्यापित कर सकते हैं कि एक बार लोड होने वाली दुकान में वास्तव में रिकॉर्ड हैं? –

+0

यह हमेशा मेरे लिए ठीक काम करता है ... क्या यह ExtJS ** 4 ** के लिए है? आपका स्टोर और कम्बोबॉक्स अभी भी ऊपर जैसा ही कॉन्फ़िगर किया गया है? क्या आपने ऊपर दिए गए उदाहरण को अन्य सभी कार्यों के बाहर रखा है लेकिन Ext.onReady के अंदर? यदि आप इसके बारे में गंदगी सरल होना चाहते हैं (लेकिन गतिशील नहीं) तो आप हमेशा कम्बोबॉक्स में 'मान' कॉन्फ़िगरेशन जोड़ सकते हैं जैसे: 'value: '100'' या' value: 100' – Geronimo

+0

मैंने इन चीजों को आजमाया 1 'store.getAt (' 0 ')। (' qty ') प्राप्त करें)' चेतावनी में प्राप्त करें और अपेक्षित मान के रूप में मूल्य प्राप्त करें यानी 100 लेकिन यह डिफ़ॉल्ट रूप से सेट नहीं किया गया। 2. जब मैंने मूल्य की कोशिश की: '100' और मान: 100 यह 100 के रूप में डिफ़ॉल्ट सेट नहीं दिखा रहा है। –

संबंधित मुद्दे