2009-03-04 20 views
7

मैं स्क्रिप्ट के परीक्षण कर रहा हूँ:मैं एक यूयूआई डेटा को रीफ्रेश कैसे कर सकता हूं बटन के साथ?

http://developer.yahoo.com/yui/examples/datatable/dt_xhrjson.html

मैं डेटा ताज़ा (रीसेट) के लिए एक बटन को जोड़ना चाहते हैं। मैं सभी संशोधित डेटा रीसेट कर दूंगा और पहले डेटा को पुनः लोड करूंगा। मैं इस कोड को जोड़ना है, तो चयन करें (ताज़ा) के बाद, मुझे कोई डेटा नहीं है:

YAHOO.util.Event.onContentReady("splitbuttonsfromjavascript", function() { 

var onMenuItemSelect = function() { 

     myDataTable.initializeTable(); 

     myDataTable.render(); 

     }; 

     var aSplitButton5Menu = [ 

      { text: "Refresh", value: 1, onclick: { fn: onMenuItemSelect } } 

     ]; 

     var oSplitButton5 = new YAHOO.widget.Button({ type: "split", label: "Refresh table", name: "splitbutton", menu: aSplitButton5Menu, container: this }); 

    }); 

मुझे अपने onMenuItemSelect में उपयोग करने के लिए mydataTable ताज़ा करने की आवश्यकता?


मैं कुछ परिवर्तन नमूने में "शहर" और "मूल्यांकन" संशोधित करने के लिए बनाया: अब http://developer.yahoo.com/yui/examples/datatable/dt_xhrjson.html

, मैं एक बटन (और पुनः लोड डिफ़ॉल्ट डाटासेट) के साथ MyTable को रीसेट करना चाहते हैं। जब मैं अपने कोड का उपयोग करता हूं, बटन क्लिक करने के बाद, मैं सभी को साफ़ करता हूं और डिफ़ॉल्ट डेटा पुनः लोड नहीं किया जाता है (मेरे पास है: "कोई रिकॉर्ड नहीं मिला।" बटन क्लिक के बाद)।

मैं डिफ़ॉल्ट डेटा को फिर से लोड कैसे कर सकता हूं?

उत्तर

4

आप एक DataTable उदाहरण mytable है मान लिया जाये कि:

myTable.render() तालिका पुनः बनाने जाएगा; myTable.initializeTable() दूर सभी राज्य झटका होगा, प्रकार और चयन भी शामिल है, और पुनः बनाने

-Eric

+0

2.7 में, मैं भी अगर न पेज बदल रहा है और न ही छँटाई नहीं, 'myTable.getDataSource()। FlushCache()' करना था। –

2

मुझे लगता है कि अगर आप अपने बटन कॉल इस समारोह है यह काम करेगा:

myDataTable.getDataSource().sendRequest('', 
{ success: myDataTable.onDataReturnInitializeTable,scope: myDataTable}); 
+0

उस के साथ केवल नकारात्मक पक्ष यह है आप स्वचालित रूप से 'लोड हो रहा है ...' यूआई नहीं मिलता है, जबकि डेटा सर्वर से लाई जा रही है है। – JohnRudolfLewis

+0

इसके अलावा, यह केवल डायनामिक डेटा के लिए काम करता है - सर्वर साइड डेटा एक requery विस्तार सत्यम द्वारा की पेशकश की जरूरत है। – JasonMichael

5

मैं विधि है कि Gourneau पोस्ट (यह हर जगह उल्लेख किया गया है) काम करने के लिए नहीं मिल सका, तो मैं इस छोटे से हैक के साथ आया था:

function updateTable(){ 
     sortState = theDataTable.getState().sortedBy 
     var sort = sortState ? sortState.key : "id"; 
     var dir = sortState ? sortState.dir : "yui-dt-desc"; 
     theDataTable.sortColumn(theDataTable.getColumn(sort),dir); 
    }; 
आप

वर्तमान सॉर्ट विधि ढूंढें, और उसके बाद कॉलम को कॉल करने के लिए कॉल करें, इसे फिर से सॉर्ट करने के लिए कहें, और यह डेटा को रीफ्रेश करता है। यह भी क्रम में अंकन रखता है। मैं इसे एक खोज बॉक्स और कुछ फ़िल्टर के साथ उपयोग करता हूं ताकि मैं उनके मूल्य बदल सकूं और तदनुसार तालिका अपडेट कर सकूं।

+0

धन्यवाद! यह एकमात्र तरीका है जिसे मैं फिर से दिखाने के लिए [लोड हो रहा है ...] ui प्राप्त कर सकता हूं। धन्यवाद! – JohnRudolfLewis

+0

मुझे लोड होने के लिए एक बेहतर तरीका मिला ... ui दिखाने के लिए, मेरा जवाब देखें। – JohnRudolfLewis

10

मुझे लगता है कि गोरनेउ का जवाब सबसे अच्छा है, लेकिन इसमें एक अच्छा स्पर्श नहीं है। प्रदर्शित करने के लिए 'लोड हो रहा है ...' संदेश प्राप्त करने के लिए, आपको showTableMessage फ़ंक्शन पर कॉल करने की आवश्यकता है।

myDataTable.showTableMessage("Loading..."); 
myDataTable.getDataSource().sendRequest('', { success: myDataTable.onDataReturnInitializeTable, scope: myDataTable }); 

जब अनुरोध समाप्त हो गया है, onDataReturnInitializeTable समारोह स्वचालित रूप से तालिका संदेश साफ हो जाएगा।

मैंने इसे अपने blog पर भी पोस्ट किया।

+0

एक सवाल जहाँ आप इस कोड में अनुरोध के लिए मानकों रखूँ इस के लिए धन्यवाद,? क्या यह एकल उद्धरण के अंदर है? .sendRequest ('myparam = test', {सफलता ...? –

2

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

यहाँ के साथ शुरू करने के लिए एक कड़ी है, लेकिन मैं भी नीचे और उदाहरण या उदाहरण है कि datatable के अपने संस्करण के साथ और अधिक फिट के लिए "सत्यम requery" खोज करेंगे।

http://www.satyam.com.ar/yui/2.6.0/requery.html

-जेसन

पी.एस. आप सर्वर के डेटा, तो एक समाधान है कि इस्तेमाल onDataReturnInitializeTable विधि में मदद मिलेगी उपयोग कर रहे हैं, लेकिन मैं सत्यम के समाधान इस के लिए खातों, यह भी लगता है, साथ ही अपने पृष्ठांकन का ट्रैक रखने के।

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