2012-03-01 13 views
7

मैं एक आरपीसी कॉल से सर्वर पर लोड होने पर एनिमेटेड gif दिखाने के लिए जीडब्ल्यूटी डेटाग्रिड की सुविधा का उपयोग करने की कोशिश कर रहा हूं।जीडब्ल्यूटी डेटाग्रिड सेट लोडिंग इंडिकेटर का कोई प्रभाव नहीं है

मुझे किसी भी संसाधन को कोई भी संसाधन नहीं मिला। इसके लिए समर्थन वास्तव में गरीब है।

मैं उपयोग करते हुए मेरे डेटा ग्रिड inizialize:

myDataGrid.setLoadingIndicator(new Image(/*my ImageResource object*/); 

और कार्यक्रम के प्रवाह के दौरान मैं का उपयोग करें:

myDataGrid.fireEvent(new LoadingStateChangeEvent(LoadingState.LOADING)); 

जब मैं सिर्फ, 'लोड हो रहा है' राज्य में डेटा ग्रिड डाल करने के लिए यानी चाहते हैं आरपीसी कॉल करने से पहले, और फिर:

myDataGrid.fireEvent(new LoadingStateChangeEvent(LoadingState.LOADED)); 

ग्रिड डेटा के साथ पॉप्युलेट होने के ठीक बाद।

यह काम नहीं करता है। मुझे डेटाग्रिड में कोई बदलाव नहीं दिख रहा है, मैं एनिमेटेड gif नहीं देख सकता, यह प्रक्रिया के दौरान अपरिवर्तित बनी हुई है। क्या मैं कुछ गलत कर रहा हूं?

कृपया मदद करें।

+0

हाँ, मेरा मतलब आरपीसी (रिमोट प्रक्रिया कॉल) था। हां मानक तरीका जीडब्ल्यूटी सर्वर के साथ संवाद करने के लिए उपयोग करता है। उस पर ध्यान केंद्रित न करें। सवाल डेटाग्रिड की लोडिंग स्थिति के बारे में है। मैं डेटाग्रिड की 'लोडिंग' स्थिति कैसे सेट कर सकता हूं ताकि यह लोडिंग सूचक दिखाता है जिसे मैंने पहले सेटलोडिंग इंडिकेटर() फ़ंक्शन का उपयोग करके सेट किया था, और उसके बाद, मैं डेटाग्रिड की सामान्य, 'लोडेड' स्थिति को फिर से कैसे सेट कर सकता हूं यह पंक्तियों को दिखाया गया है? यह असली सवाल है। मैंने dataGrid.fireEvent का उपयोग किया (नया लोडिंगस्टेट चेंजएवेंट (लोडिंग/लोडेड)); लेकिन ऐसा कोई प्रभाव नहीं पड़ता है। मैं कहाँ गलत हूँ? प्रतिक्रिया के लिए – Magallo

उत्तर

9

यदि आप updateRowCount(0, false) पर कॉल करते हैं, तो लोडिंग छवि प्रदर्शित की जाएगी।

+1

धन्यवाद। वैसे भी मुझे DataGrid के लिए UpdateRowCount() विधि नहीं मिल रही है। इस विधि को क्या संदर्भित किया जाता है? – Magallo

+0

असल में मैं देखता हूं कि UpdateRow() को AbstractDataProvider से प्राप्त किया गया है और संरक्षित है इसलिए मैं इसे कॉल नहीं कर सकता। यह संरक्षित क्यों है? क्या कोई और तरीका है? – Magallo

+0

यह संरक्षित है क्योंकि आपके डेटा प्रदाता को इसे कॉल करना चाहिए। इसलिए, जब आप अधिक जानकारी के लिए अपने डेटा प्रदाता से पूछते हैं, तो आपका डीपी तत्काल 'अपडेटरोवाउंट (0, झूठा)' कॉल कर सकता है, और फिर, जब आपका सर्वर कॉल रिटर्न करता है, तो 'अपडेटरोवउंट (आकार ओफ्रेशल्ट, सत्य)' –

1

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

// Only required if you are using a pager 
    int pageSize = pager.getPageSize(); 

    // This will trigger the onRangeChanged-event and call 
    // the data provider 
    dataGrid.setVisibleRangeAndClearData(new Range(0, 1), true); 
    // Together with the row above, this will show the loading-indicator 
    // in the data grid 
    dataGrid.setRowCount(1); 

    // Usually, the data is loaded when the data grid is initialized. 
    // In my application, the user has to enter some input first and 
    // then (re-)load the data via a button. 
    // If you want your data grid to be filled when it is intialized, 
    // simply remove the if-block 
    if (dataProvider.getDataDisplays().size() == 0) { 
     dataProvider.addDataDisplay(dataGrid); 
    } 

    // This will re-set the paging (only required if you are using a pager) 
    dataGrid.setPageSize(pageSize); 
0

मैं में कौन-सा संस्करण यह जोड़ा गया है यकीन नहीं है, लेकिन 2.8.0-beta1 में मैं dataGrid.setRowCount(0, false) का उपयोग कुछ इसी तरह प्राप्त करने के लिए।

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