2010-11-01 9 views
7

लोग,शून्य मूल्यों के साथ EXTJS स्टोर समस्या - उपयोग नल: कोई प्रभाव नहीं पड़ता है - सहायता?

मेरे पास JSONStore द्वारा समर्थित एक combobox घटक है। स्टोर में लोड किया गया डेटा कंबोबॉक्स के मूल्य के लिए शून्य लौट रहा है। मूल्य एक int है। JSON डीकोड प्रक्रिया शून्य मान को शून्य में परिवर्तित कर रही है; जब यह पीके को खोजने का प्रयास करता है तो combobox प्रस्तुत करने में विफल रहता है, शून्य जो उसके बैकिंग स्टोर में मौजूद नहीं है।

मुझे डेटा के लिए उपयोग: कॉन्फ़िगरेशन विकल्प मिला है। फ़ील्ड ऑब्जेक्ट्स, 3.3.0 फ़ाइनल में अपग्रेड किया गया है और combobox के लिए मेरा int मान सेट करने के लिए सेट करें: सत्य। दुर्भाग्यवश, इसका कोई असर नहीं पड़ रहा है। डीकोडेड मान अभी भी शून्य से शून्य तक बदला जा रहा है।

जेएसओएन फ़ील्ड के डेटा शून्य होने पर फ़ील्ड को शून्य पर सेट नहीं करने के बारे में कोई भी विचार है?

यहां क्या चल रहा है इसका एक चित्र है। डेटा पर ध्यान दें: मान शून्य है, लेकिन JSON मान शून्य है।

धन्यवाद!

(! गाह stoopid प्रतिष्ठा < 10 तो मैं सीधे पिक पोस्ट नहीं कर सकते इसे यहाँ देखें:। debug pic):

fields: [ 
     {name:"id", type:"int"}, 
     {name:"occurenceDate", dateFormat: 'Y-m-d\\TH:i:s', type:"date"}, 
     {name:"docketNumber", type:"string"}, 
     {name:"courtLocationId", type:"int", useNull:true}, 
     {name:"assignedOfficerId", type:"int", useNull:true}, 
     {name:"primaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"secondaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"tertiaryIncidentTypeId", type:"int", useNull:true}, 
     {name:"incidentLocation", type:"string"}, 
     {name:"summary", type:"string"}, 
     {name:"personalItemsSeized", type:"string"}, 
     "supplements", 
     "parties", 
     "judgeIds" 
    ] 
+0

सर्वर। मैंने JSONObjectMapper को क्लाइंट को शून्य फ़ील्ड वापस करने के लिए कॉन्फ़िगर नहीं किया है (जैक्सन डब्ल्यू/स्प्रिंग का उपयोग करके): setSerializationConfig()। SetSerializationInclusion (JsonSerialize.Inclusion.NON_NULL); अब शून्य फ़ील्ड वापस नहीं आ रहे हैं, लेकिन combobox अभी भी सही ढंग से प्रस्तुत करने में विफल रहा है। अभी भी शोध कर रहे हैं .... –

उत्तर

3

बिना इसे आज़माएं

इसके अलावा, यहां मेरे स्टोर का क्षेत्र config है घोषणा टाइप करें।

{ 
    name: "primaryIncidentTypeId", 
    convert: function(value, row) { 
     return (value == null) ? null : parseInt(value); 
    } 
} 
+0

टिप के लिए धन्यवाद। मैंने उपरोक्त सफलतापूर्वक जोड़ा (केवल अंतर: Ext.isEmpty (मान) - मान एक खाली स्ट्रिंग है और! = शून्य)। जिसने JSON के शून्य को शून्य मान का अनुवाद करने का मुद्दा हल किया, लेकिन इस समस्या को हल नहीं किया जहां मेरे कॉम्बो बॉक्स कम हो रहे थे। मैंने पाया कि आपको स्पष्ट रूप से चौड़ाई निर्धारित करना है: एक combobox के लिए कॉन्फ़िगर, अन्यथा combos कम हो जाएगा। –

+0

एक और नोट: मैं इस प्रक्रिया के दौरान दो मुद्दों में भाग गया।पहला यह है कि कन्वर्ट: फ़ंक्शन मैंने फ़ील्ड में परिभाषित किया है: स्टोर के परम को कभी भी नहीं कहा जा रहा था। इसका कारण यह है कि मैं स्टोर से पॉप्युलेट प्राप्त करने के लिए सर्वर से कॉलम मेटा डेटा लौटा रहा था; क्लाइंट-साइड जावास्क्रिप्ट कॉन्फ़िगरेशन में जो कोड किया गया था उसे ओवरराइट करना। –

+0

दूसरा मुद्दा Extjs 3.3.0 के साथ था। अंतिम रिलीज में मुझे लगता है कि एक बग है जब बेसिकफॉर्म को अपडेट करने के लिए रिकॉर्ड्स() को एक फॉर्म पर जिनके फ़ील्ड शून्य हैं। मुद्दा बेसिकफॉर्म के अपडेट के आंतों में है रिकॉर्डर(): यह getValue() को कॉल करने वाले अपने फ़ील्ड के माध्यम से पुनरावृत्त करता है, लेकिन फिर value.groups को कॉल करता है - या ऐसा कुछ। यदि मान शून्य है, तो यह एक वस्तु नहीं है और ... KABOOM। इस पर कोई राय? मुझे 3.3 तक अपग्रेड करना अच्छा लगेगा, इसलिए मैं उपयोग नल का उपयोग कर सकता हूं: कन्वर्टर्स की बजाय संपत्ति। –

0

कॉम्बो चौड़ाई के बारे में:: तुम भी परिवर्तित विधि का उपयोग कर सकते हैं मैं आमतौर पर प्रपत्र घोषणा में

defaults: { 
    anchor: '100%' 
} 

का उपयोग करें और चौड़ाई के साथ कोई समस्या नहीं।

क्या अन्य सभी मेटाडेटा के साथ सर्वर पक्ष से कनवर्ट फ़ंक्शंस प्रदान करना संभव नहीं है?

और मैं अभी भी ExtJS 3.2 उपयोग कर रहा हूँ - उत्पादन प्रणालियों :)

+0

हां, आप सर्वर पक्ष से मेटा डेटा में कनवर्ट फ़ंक्शंस प्रदान कर सकते हैं, इसे इंगित करने के लिए खेद है। हम किसी भी जावा बीन के आधार पर extjs store मेटाडेटा उत्पन्न करने के लिए कुछ सर्वर-साइड कोड का उपयोग करते हैं। जेनरेट कोड में कन्वर्टर्स को शामिल करने के लिए हमारी प्रक्रिया अभी तक परिष्कृत नहीं है। –

+0

टिप री 'एंकर के लिए धन्यवाद:' 100% '' मैंने इसका इस्तेमाल किया है, लेकिन मेरा फॉर्म आकर्षक होने के लिए बहुत व्यापक है। मुझे आकार का प्रबंधन करने के लिए फॉर्म में कॉलम डालने की तरह कुछ पता लगाना होगा। जब तक मैं खुद को डी-आलसी-मैं-फाई नहीं करता, मैं चौड़ाई के साथ रहूंगा:। :-) –

0

यह भी मुझे मिल गया में किसी भी नए कीड़े की कोई जरूरत नहीं है, तो आप इसके साथ ही अनुमति देने के लिए Ext.data.Types में प्रकार परिवर्तित समारोह ओवरराइड कर सकते हैं पूर्णांक प्रकार फ़ील्ड के लिए शून्य मान।

Ext.data.Types.INT.convert = function(v){ 
    v = parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10); 
    return isNaN(v) ? null : v; 
}; 
-1

आप defaultValue: null ,useNull : true का उपयोग करना चाहिए क्योंकि integet प्रकार के लिए डिफ़ॉल्ट मान है शून्य

उदाहरण:

{name:"primaryIncidentTypeId", type:"int", useNull:true , defaultValue: null }, 
अब मुझे यकीन है कि बता गया का प्रतिपादन मुद्दों क्योंकि अन-mappable मूल्यों से आने वाले हैं नहीं कर रहा हूँ
संबंधित मुद्दे