ExtJS में, जब मैं ग्रिड प्रदर्शित करता हूं तो मैं स्टोर कैसे लोड करूं? मैं स्टोर को केवल तभी लोड करना चाहता हूं जब ग्रिड प्रदर्शित होता है (उपयोगकर्ता ग्रिड दिखाने के लिए बटन पर क्लिक करता है, इसलिए स्टोर को पहले लोड करना अपर्याप्त है)। मैंने afterrender
श्रोता की कोशिश की लेकिन यह गलत स्थान पर लोडमास्क प्रस्तुत करता है, और afterlayout
श्रोता हर बार ग्रिड का आकार बदलने के बाद ग्रिड को पुनः लोड करता है।ExtJS में, जब मैं ग्रिड प्रदर्शित करता हूं तो मैं स्टोर कैसे लोड करूं?
उत्तर
यह उन चीजों में से एक है जो पूरा करने के लिए दर्द का थोड़ा सा हो सकता है क्योंकि ब्राउजर को एक बार में विशेष रूप से करने के लिए बहुत कुछ देना था (विशेष रूप से आईई में ध्यान देने योग्य)।
मैं डिफिगर के संयोजन का उपयोग करना चाहता हूं ताकि ब्राउजर को चीजों को सही तरीके से प्रस्तुत करने के लिए पर्याप्त समय तक ठीक हो सके।
var grid = new Ext.grid.GridPanel({
...,
listeners : {
render : function(grid){
grid.body.mask('Loading...');
var store = grid.getStore();
store.load.defer(100, store);
},
delay: 200
}
});
देरी/स्थगित करने के मूल्य के साथ बजाना आपको वांछित परिणाम देना चाहिए। देरी/स्थगित करने के लिए आपको जिस समय की आवश्यकता होगी, उस पर निर्भर करता है कि आपका ग्रिड कितना जटिल है और ब्राउज़र कितना तेज़ है।
आपके स्टोर के लोड को पूरा होने पर मास्क को हटाना भी याद रखें।
listeners: {
load: function(){
yourGrid.body.unmask();
}
}
नोट: बस लॉयड द्वारा जवाब देने के लिए कुछ स्पष्टीकरण - आप गलत पर AutoLoad स्थापित करने के लिए है, क्योंकि वह डिफ़ॉल्ट है की जरूरत नहीं है (यानी: यह बिल्कुल निर्धारित नहीं करते हैं) और इसे से की तरह लगता है आपका विवरण है कि आप रीलोड के बजाय स्टोर लोड विधि का उपयोग करना चाहते हैं।
आप स्टोर के लिए ऑटोलोड को गलत पर सेट कर सकते हैं और बस store.reload() को कॉल कर सकते हैं; जब उपयोगकर्ता ग्रिड दिखाने के लिए बटन पर क्लिक करता है।
यह काम करता है, लेकिन फिर इसका मतलब है कि ग्रिड अपने स्टोर के लिए ज़िम्मेदार नहीं है। यह ठीक है अगर आप कई घटकों में एक स्टोर साझा कर रहे हैं, लेकिन एक ग्रिड के लिए, मुझे स्टोर लोडिंग के लिए ग्रिड जिम्मेदार होना चाहिए। –
क्या आपने activate
ईवेंट को संभालने पर विचार किया है? आप एक ईवेंट हैंडलर जोड़ सकते हैं जो activate
ईवेंट पर डेटा लोड करता है और फिर स्वयं को हटा देता है।
this.on('activate', function(){
this.un('activate', arguments.callee);
this.store.load();
}, this);
यहाँ this
GridPanel
को दर्शाता है।
- 1. extjs में स्टोर डेटा को ग्रिड
- 2. जब मैं ऑफस्क्रीन करता हूं तो अपडेट करने के लिए मैं UIWebView को कैसे मजबूर करूं?
- 3. जब कर्सर emacs में ओवरले में प्रवेश करता है तो मैं एक प्रॉम्प्ट कैसे प्रदर्शित करूं?
- 4. जब मैं आईओसी का उपयोग करता हूं तो मैं ऑब्जेक्ट निपटान का प्रबंधन कैसे करूं?
- 5. EXTJS + ग्रिड
- 6. Extjs स्टोर
- 7. जब मैं एंकर पॉइंट सेट करता हूं, तो मेरी छवि
- 8. मैं ExtJS में घटकों का पुन: उपयोग कैसे करूं?
- 9. Extjs ग्रिड
- 10. मैं ऑर्डर कैसे स्टोर करूं?
- 11. मैं टिंकर में टूलटिप्स कैसे प्रदर्शित करूं?
- 12. जब मैं किसी तत्व पर क्लिक करता हूं तो मैं जावास्क्रिप्ट को कैसे चलाता हूं?
- 13. ExtJs 4.1 ग्रिड
- 14. जब मैं आयाम बदलता हूं तो मैं सबव्यू के रीड्रॉइंग (ड्राआरक्ट) को कैसे फोर्स करता हूं?
- 15. मैं यह कैसे सुनिश्चित करूं कि जब मैं इसे पुन: सक्रिय करता हूं तो मैं टेस्ट कोड तोड़ नहीं देता?
- 16. extjs ग्रिड
- 17. जब मैं क्लोजर में संख्याओं को विभाजित करता हूं तो मुझे एक अंश मिलता है, मैं दशमलव कैसे प्राप्त करूं?
- 18. जब मैं एचजी पुल करता हूं और एचजी अद्यतन करता हूं तो
- 19. जब मैं tSQLt faketable तालिका मैपिंग रीसेट नहीं करता है तो मैं कैसे पुनर्प्राप्त करूं?
- 20. ExtJS ग्रिड
- 21. जब मैं भाग बदलता हूं तो मैं पुन: संयोजन करने के लिए एमईएफ कैसे प्राप्त करूं?
- 22. जब मैं जेपीए का उपयोग कर रहा हूं तो मैं डेटाबेस विकास कैसे प्रबंधित करूं?
- 23. जब मैं डिबगिंग नहीं कर रहा हूं तो मैं console.log को कैसे अक्षम करूं?
- 24. जब मैं एक असेंबली लोड करता हूं तो क्या होता है?
- 25. मैं कैसे तय करूं कि व्यूस्टेट में स्टोर करना है?
- 26. जब मैं jQuery के माध्यम से tinyMCE लोड करता हूं तो ब्राउज़र फ्रीज .load()
- 27. ExtJS ग्रिड में खाली पंक्तियां कैसे जोड़ें?
- 28. Extjs ग्रिड पैनल -
- 29. मैं एक गीत में रेटिंग कैसे स्टोर करूं?
- 30. जब मैं इसे कई बार पुन: उपयोग करता हूं तो मैं लेआउट के अंदर के विचारों को कैसे एक्सेस करूं?
यह एक अच्छा तरीका है, हालांकि अगर आपको लगता है कि आपको वास्तव में इसकी आवश्यकता है तो मैं केवल मास्किंग लागू करूंगा। यदि यह बहुत तेज़ी से लोड हो जाता है तो मास्क एक झिलमिलाहट की तरह लग सकता है। साथ ही, सुनिश्चित करें कि आप स्टोर के लोड इवेंट हैंडलर में अनमास्क करें। लेआउट ब्राउज़र संयोजन उदाहरण "नेस्टेड लेआउट के साथ टैब" इसका उपयोग अपने आंतरिक ग्रिड में स्टोर लोडिंग की रेंडर विधि पर करता है: http://www.extjs.com/deploy/dev/examples/layout-browser/layout-browser.html –
मैं ब्रायन की टिप्पणियों से सहमत हूं - यदि आपका डेटा ~ 5 सेकंड से कम समय में वापस आता है तो ऐसा करने के बारे में भूल जाओ। उपयोगकर्ता इसे कभी नहीं देख पाएगा। मास्क को हटाने के बारे में एक tidbit जोड़ा गया, धन्यवाद। –
अच्छा एक .. बस आश्चर्य है, 'देरी: 200' का उपयोग क्या है? क्या यह आवश्यक है? – Gugan