2011-04-05 11 views
7

मैं एक ExtJS डेटाग्रिड के कॉलम डिस्प्ले (छुपा, दिखा रहा, चल रहा, आकार बदलने) में उपयोगकर्ता के परिवर्तनों को लगातार और सर्वर पर संग्रहीत करना चाहता हूं। वहाँ की घटनाओं का एक बहुत सुनने के लिए है, लेकिन ग्रिड पर ही संचालकों को पंजीकृत बुलाया जा रहा है अलर्ट में परिणाम प्रतीत नहीं होता है: (। मेरे बुनियादी दृष्टिकोण या नहीं इष्टतम भी हो सकती है)मैं एक्स्टजेएस डाटाग्रिड कॉलम छुपा/दिखा रहा/चल रहा/आकार बदल रहा हूं?

grid.on('hide', function(event) 
     { 
     alert('Save column order: column hidden.'); 
     }); 
    grid.on('move', function(event) 
     { 
     alert('Save column order: column moved.'); 
     }); 
    grid.on('resize', function(event) 
     { 
     alert('Save column sizes: column resized.'); 
     }); 
    grid.on('show', function(event) 
     { 
     alert('Save colum order: column shown.'); 
     }); 

इन घटनाओं पर सुनने के लिए मुझे क्या ठोस रूप से करना चाहिए? मैं अलर्ट ट्रिगर किए बिना कॉलम छुपा सकता हूं, दिखा सकता हूं, स्थानांतरित कर सकता हूं और आकार बदल सकता हूं।

+0

यह ग्रिडपेनल के साथ काम करता था, लेकिन एक संपादक ग्रिडपैनल में परेशानी हो रही है। एक राज्यव्यापी संपादक GridPanel के लिए कोई सुझाव? – JonathanHayward

+0

अंतिम प्रश्न कभी भी ध्यान न दें; मुझे राज्य आईडी सेट करने की ज़रूरत थी और फिर सबकुछ खुश था। – JonathanHayward

उत्तर

15

पहले, आपको state provider कॉन्फ़िगर करने की आवश्यकता है।
CookieProvider केवल एक ही है कि ExtJS

Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); 

दूसरा साथ में बनाया आता है, निशान yourGridPanel.stateful रूप true

तीसरा, पर आप GridPanel के लिए डिफ़ॉल्ट को बदलने की जरूरत है कि क्या देखने के लिए है। stateEvents
यह मूलतः कि "घटनाओं की एक सरणी है कि, जब निकाल दिया, अपने राज्य को बचाने के लिए इस घटक उत्प्रेरित करने चाहिए"

चौथा, HttpStateProvider ExtJS लेकिन Saki साथ में बनाया आने नहीं करता है एक ux (user extension) for it है ।

पांचवें, यदि आप कई घटकों में से राज्यों को सहेजना चाहते वे या तो id या stateId स्पष्ट रूप से सेट होना चाहिए।

CookieProvider में निर्मित के साथ यह काम करने के लिए एक अच्छा तरीका होगा और फिर Http Provider पर स्विच करें।

+0

यह 2.x एक्सटेंशन है और जब मैंने इसे 3.x से चलाने की कोशिश की, तो मुझे Ext.ux.HttpProvider() को तुरंत चालू करने का प्रयास करने के लिए "अनिर्धारित कार्य नहीं है"। 3.0 पोर्ट प्राप्त करने पर कोई सलाह? – JonathanHayward

+0

क्या ग्रिड की सभी पंक्तियों की स्थिति को स्टोर करना संभव है? – Shekhar

+0

@ शेखर - ग्रिड राज्य ग्रिड कॉन्फ़िगरेशन से संबंधित है। पंक्तियों में दिखाई देने वाले स्टोर डेटा के साथ नहीं। आपको बैकएंड पर पंक्तियों की बचत को संभालने और स्टोर से अपने सर्वर कॉल पर पैरामीटर का उपयोग करके उन्हें पुनर्प्राप्त करने की आवश्यकता होगी। –

2

ग्रिड में "स्टेटफुल" नामक एक संपत्ति होनी चाहिए। इसे सही पर सेट करें और ग्रिड को कॉलम चौड़ाई, आदि को याद रखना चाहिए

+0

आपको बहुत बहुत धन्यवाद! – JonathanHayward

0

stateful: true के साथ ग्रिड को कॉन्फ़िगर करें और stateId सेट करें (वैकल्पिक यदि आपके ग्रिड में एक आईडी है जो बदलेगी)। इसके अलावा प्रारंभ Ext.state.Manager:

var thirtyDays = new Date(new Date().getTime()+(1000*60*60*24*30)); 
Ext.state.Manager.setProvider(new Ext.state.CookieProvider({expires: thirtyDays})); 

हालांकि Ext 3 में शामिल नहीं है, तो आप एचटीएमएल 5 के localStorage बजाय कुकीज़ का उपयोग करता है कि एक राज्य प्रदाता ऑनलाइन पा सकते हैं।

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