2011-09-08 22 views
5

मैं एक ExtJS स्वत: पूर्ण होने निम्नलिखित विन्यास के लिए इस्तेमाल किया बता गया है। यदि कोई उपयोगकर्ता सर्वर से लौटाई गई सूची से कोई मान चुनता है, लेकिन बाद में उस मान को हटाना चाहता है और कॉम्बो-बॉक्स खाली रखना चाहता है, तो पुराने मूल्य भी धुंध पर दिखाई देते हैं, जिससे कॉम्बो-बॉक्स खाली नहीं रहता है। इस तरह के मामले में मैं इस कॉम्बो-बॉक्स में खाली मूल्य कैसे अनुमति दे सकता हूं? मुझे लगता है कि यह बल के कारण हो सकता है चयन: सत्य, लेकिन फिर मुझे इसे सही रखने की आवश्यकता है क्योंकि अन्यथा उपयोगकर्ता कोई यादृच्छिक मान टाइप कर सकता है।ExtJS 4 ComboBox स्वत: पूर्ण

बी। जब सर्वर एक खाली सूची देता है, तो मैं एक संदेश प्रदर्शित करना चाहता हूं - कोई मान नहीं मिला। मैंने इस मान को डिस्प्ले फ़ील्ड इकाई, यानी, {id: '', नाम: 'कोई मान नहीं मिला'} में डालकर करने का प्रयास किया। लेकिन फिर इस मामले में, उपयोगकर्ता इस मान को चुनने और इसे सर्वर पर भेजने में सक्षम है जो अपेक्षित नहीं है। इस प्रकार, मैं खाली सूची के लिए संदेश कैसे प्रदर्शित कर सकता हूं?

क्या कोई इस पर प्रकाश डाल सकता है?

उत्तर

3

ऊपर सवाल में forceSelection से संबंधित मुद्दा है, तो निम्न के लिए हैक बनाया उम्मीद प्रस्तुत कर सकता है जो है।

किसी भी मूल्य पर दिखाए जाने वाले संदेश के दूसरे अंक के लिए - खाली टेक्स्ट - वरुण द्वारा सुझाए गए अनुसार ठीक काम करता है।

आशा है कि इससे किसी को कुछ इसी तरह की तलाश करने में मदद मिलेगी।

2

मैंने इसे एक्सएस जेएस 3.3.1 के लिए किया है। मुझे नहीं पता कि वे एक्सटी जेएस 4 पर आवेदन करते हैं, हालांकि मुझे लगता है कि उन्हें चाहिए।

पहली समस्या के लिए, autoSelect : false सेट करें। autoSelect डिफ़ॉल्ट रूप से true पर सेट है। यह केवल तभी काम करेगा जब allowBlank : true सेट हो। दस्तावेज़ों से

डेटा स्टोर द्वारा एकत्र किए गए पहले परिणाम का चयन करने के लिए सही (डिफ़ॉल्ट डिफ़ॉल्ट पर)। (typeAheadDelay) का मान सत्य होने तक घटकों के मान को सेट करने के लिए ड्रॉपडाउन सूची से मैन्युअल चयन की आवश्यकता होगी।

दूसरी समस्या के लिए, listEmptyText का उपयोग करें। दस्तावेज़ों से

कोई आइटम नहीं मिलने पर डेटा दृश्य में प्रदर्शित करने के लिए खाली टेक्स्ट। ('' के लिए डिफ़ॉल्ट)

चीयर्स।

Ext.override(Ext.form.field.ComboBox,{   
    assertValue: function() { 
     var me = this, 
      value = me.getRawValue(), 
      rec; 
     if (me.multiSelect) { 
      // For multiselect, check that the current displayed value matches the current 
      // selection, if it does not then revert to the most recent selection. 
      if (value !== me.getDisplayValue()) { 
       me.setValue(me.lastSelection); 
      } 
     } else { 
      // For single-select, match the displayed value to a record and select it, 
      // if it does not match a record then revert to the most recent selection. 
      rec = me.findRecordByDisplay(value); 
      if (rec) { 
       me.select(rec); 
      } else { 
       if(!value){ 
        me.setValue(''); 
       }else{ 
        me.setValue(me.lastSelection); 
       } 
      } 
     } 
     me.collapse(); 
    } 
}); 

इस के बाद ExtJS के पुस्तकालय फ़ाइलें शामिल किया गया है शामिल किया जाना चाहिए:

+0

हाय वरुण, उत्तर देने के लिए धन्यवाद। ऑटो चयन वास्तव में सूची में पहली प्रविष्टि को हाइलाइट कर रहा है और पुराने मान को हटाने और शून्य की अनुमति देने के उद्देश्य से नहीं कर रहा है। और listEmptyText के लिए - मैं ExtJS4 दस्तावेज़ों में इस कॉन्फ़िगरेशन का पता नहीं लगा सका, इसे बंद कर दिया जा सकता है। तो मैंने उन दोनों की कोशिश की लेकिन उन्हें दुर्भाग्य से ExtJs 4 में काम करने के लिए नहीं मिला, और फिर भी कुछ समाधान की तलाश में। – netemp

+2

मैंने अभी दस्तावेज़ों की जांच की है, 'listEmptyText' अब' listConfig' ''खाली टेक्स्ट' विकल्प के माध्यम से सेट किया जा सकता है। उसकी कोशिश करो। मैंने इसे खुद कोशिश नहीं की है। 'AllowBlank' प्रॉपर्टी को दोबारा जांचें .. यही एकमात्र कॉन्फ़िगरेशन है जो अंक 1. –

+0

हे वरुण, पोस्ट के लिए धन्यवाद देगा। मैं पुष्टि करता हूं कि सूची के नीचे खाली टेक्स्ट कॉन्फिग सफलतापूर्वक काम करता है। एक बार फिर धन्यवाद। शून्य मान के लिए, मुझे लगता है कि बल चयन: सत्य अन्य विकल्पों को ओवरराइड कर रहा है, इस प्रकार, भले ही मैं अनुमति देता हूंब्लैंक: सच है, लेकिन मूल्य सूची में कोई शून्य मान मौजूद नहीं है, तो कॉम्बो-बॉक्स पुराने मान को वापस पॉप्युलेट करता है। इसे संबोधित करने का एक तरीका मुझे लगता है कि सर्वर की ओर से एक खाली रिकॉर्ड भेजना है लेकिन दुर्भाग्यवश यह सुरुचिपूर्ण नहीं है। अब तक आपकी सभी सहायता के लिए धन्यवाद। – netemp