2011-01-29 11 views
13

मैं FormPanel पर ComboBox इस्तेमाल करने की कोशिश की तरह कार्य कर, इसे इस तरह परिभाषित किया गया है:ExtJS बता गया नियमित चयन

 
     xtype:   'combo', 
     name:   'Reasons', 
     store:   new Ext.data.ArrayStore({ 
     id:  0, 
     fields: [ 'myId', 'displayText' ], 
     data: [ [ 1, 'Reason 1' ], [ 2, 'Second Reason' ], [ 3, 'Something else' ] ] 
     }), 
     typeAhead:  false, 
     mode:   'local', 
     valueField:  'myId', 
     displayField: 'displayText', 
     allowBlank:  false, 
     editable:  false, 
     forceSelection: true 

मैं एक साधारण चयन तत्व की तरह काम करने के लिए, मैं जब चाहते हैं संपादन योग्य झूठी मैं सक्षम नहीं के रूप में फिर से चयन करने के लिए, जब सही (डिफ़ॉल्ट) के रूप में मुझे पुनः चयन करने के लिए चयन (बैकस्पेस या हटाएं) को हटाने की आवश्यकता है।

चुनिंदा या shpuld करने के लिए combobox डाउनग्रेड करने के लिए मुझे और क्या बंद करना चाहिए, इसके बजाय मैं अन्य घटक का उपयोग करने पर विचार करता हूं?

मेरी चिंता यह है कि अगर मुझे वास्तव में सामान्य चयन की आवश्यकता है (सामान्य नहीं है - स्टोर करने और विकल्पों में हेरफेर करने की क्षमता बहुत अच्छी है) - combox मुझे अगले स्तर के तत्व के रूप में दिखाई देता है जिसमें मुझे बहुत सारी सुविधाएं मिलती हैं जिन्हें मुझे बंद करने की आवश्यकता होती है, और combox को तीर डाउन छवि के साथ इनपुट के रूप में प्रस्तुत किया जाता है जो सभी क्रियाओं को ट्रिगर करता है ....

मेरा प्रश्न यह है: क्या यह एक्स्टजेस तत्व है जो HTML चयन टैग का उपयोग कर रहा है, चयन के रूप में कार्य कर रहा है, चयन के रूप में प्रतिपादन करता है?

+0

आप पोस्ट कर सकते Ext के लिए पूर्ण समारोह कॉल। Combobox – Chandu

+0

शायद एक बेवकूफ सवाल है, लेकिन आप extJS का कौन सा संस्करण उपयोग कर रहे हैं? (मुझे 2.3.0 दस्तावेज में Ext.data.ArrayStore नहीं मिल रहा है और फायरबग का कहना है कि "Ext.data.ArrayStore एक कन्स्ट्रक्टर नहीं है" जब मैं स्क्रिप्ट चलाने की कोशिश कर रहा हूं (सर्वर पर संस्करण फ़ाइल v .2.2)) – aliceraunsbaek

+0

हम वर्तमान में ExtJS 3.3.x पर हैं - इसलिए आपको अपने संस्करण को पुराना मानना ​​चाहिए। –

उत्तर

10

चाल triggerAction: 'all' का उपयोग करना है - यह डाउन-तीर आइकन (ट्रिगर) पर क्लिक करते समय सभी आइटम दिखाने के लिए कॉम्बो ड्रॉपडाउन को मजबूर करता है।

शायद यह एक्स्टजेस का सबसे काउंटर-इंटिविटिव कॉन्फ़िगरेशन विकल्प है। और यह पता लगाना असंभव है कि दस्तावेज़ों को पढ़कर वास्तव में क्या करता है। और जैसा कि आप कहते हैं, एक सरल कॉम्बो प्राप्त करने के लिए, आपको केवल फैंसी सामान को बंद करने के लिए कॉन्फ़िगरेशन विकल्पों का असंख्य निर्दिष्ट करना होगा।

ExtJS लोग ExtJS 4 में इसे ठीक करने का वादा किया है, लेकिन तब तक मैं आप अपने खुद के ComboBox वर्ग कि जिस तरह से सबसे अधिक बार अपने अनुप्रयोग में जरूरत कॉन्फ़िगर किया गया है बनाने के सुझाव देते हैं। उदाहरण के लिए मैं अपने वर्तमान प्रोजेक्ट में कुछ इस तरह है:

/** 
* Simple combo, that just allows to choose from a list of values. 
*/ 
var StaticComboBox = Ext.extend(Ext.form.ComboBox, { 
    mode: 'local', 
    triggerAction: 'all', 
    editable: false, 
    valueField: 'value', 
    displayField: 'label', 
    /** 
    * @cfg {[[String]]} data 
    * Items in combobox as array of value-label pairs. 
    */ 
    data: [], 

    initComponent: function() { 
    this.store = new Ext.data.ArrayStore({ 
     fields: ['value', 'label'], 
     data: this.data 
    }); 
    StaticComboBox.superclass.initComponent.call(this); 
    } 
}); 

कि बीत रहा है, मैं बस कुछ ही लाइनों के साथ एक सरल कॉम्बो बना सकते हैं:

new StaticComboBox({ 
    name: 'Reasons', 
    data: [ 
    [1, 'Reason 1'], 
    [2, 'Second Reason'], 
    [3, 'Something else'] 
    ] 
}); 
संबंधित मुद्दे