2010-07-22 15 views
9

उम्मीद है कि यह एक तेज़ है!jqGrid getData केवल वर्तमान पृष्ठ के लिए डेटा लौटाता है

मेरे पास 'क्लाइंटसाइड' (स्थानीय) डेटा का उपयोग करके एक संपादन योग्य ग्रिड है और अब मैं जावास्क्रिप्ट में सभी पंक्तियों को पुन: सक्रिय करना चाहता हूं और इसे jQuery.ajax कॉल के माध्यम से सर्वर पर भेजने से पहले डेटा को संसाधित/पैकेज करना चाहता हूं।

समस्या यह है कि, अप्रत्याशित रूप से (मेरे लिए कम से कम), निम्नलिखित कोड का उपयोग कर वर्तमान में दृश्यमान ग्रिड पृष्ठ के लिए केवल पंक्तियां पुनर्प्राप्त करता है! मैं ग्रिड में सभी पंक्तियां कैसे प्राप्त कर सकता हूं (यानी मेरे पास 10 रिकॉर्ड के चार पृष्ठ हैं और यह कोड केवल पहले 10 को देता है जब मैं पेज 1 पर हूं)? वे क्लाइंट में कहीं मौजूद होना चाहिए क्योंकि मैं पंक्तियों को संपादित और पंक्तियों को संपादित कर सकता हूं और सर्वर को कॉल किए बिना डेटा जारी रहता है! टोनी से :)

cacheCONF = []; 
    var rows= $('#myGrid').getRowData(); //<--Need to get ALL rows here!!! 
    var cacheRowID = 0; 
    for (var row in rows) { 
     if (rows[row].Action == 'Yes') { 
      cacheCONF.push({ RowID: rowID, System: rows[row].System, Action: rows[row].Action, Account: '-', Required: '-' }); 
      rowID++; 
     } 
    } 
+2

से मिले एक समाधान अस्थायी रूप से पेज आकार बदल रहा है। उम्मीद है कि एक और "औपचारिक" समाधान है। कोड है: var पृष्ठ आकार = $ ('# myGrid')। GetGridParam ('rowNum'); $ ('# myGrid')। सेट ग्रिडपाराम ({rowNum: 10000})। ट्रिगर ("रीलोड ग्रिड"); getRowData फिर 10000 पंक्तियों तक पहुंच जाएगा (इसलिए इसे अधिकतम संभव पंक्तियों से अधिक सेट करें)। फिर आप पृष्ठ आकार को उपयोगकर्ता की प्राथमिकता पर वापस सेट करने के लिए पृष्ठ आकार का उपयोग कर सकते हैं। – jqwha

उत्तर

8

समाधान:

var mydata = $("#grid").jqGrid('getGridParam','data'); 
+2

लेकिन यह उस फ़ंक्शन को कॉल करने के दौरान सॉर्ट करते समय डेटा के सही सॉर्टिंग ऑर्डर को वापस नहीं करेगा, क्या इसके लिए कोई अन्य फ़ंक्शन है? –

+0

अच्छा जवाब। केवल समस्या यह है कि यदि आपने तालिका लोड करते समय JQGrid के भीतर फ़ॉर्मेटर फ़ंक्शंस के साथ डेटा स्वरूपित किया है, तो वे नए मान खो जाएंगे। – will824

5

एक ऐसी ही समस्या का सामना करना पड़ा था, नीचे क्या मैं का उपयोग कर समाप्त हो गया है

var data = $("#table-id").jqGrid('getGridParam', 'data'); 
for (var i = 0; i < data.length; i++) { 
    var f_name = data[i].FirstName; 
    var l_name = data[i].LastName; 
    // blah... blah.. 
} 

संदर्भ: http://www.trirand.com/blog/?page_id=393/help/jqgrid-getdata-only-returns-data-for-current-page/

+0

आपका समाधान मेरे लिए काम किया। 'getRowData()' किसी कारण से ग्रिड की अंतिम पंक्ति वापस नहीं कर रहा था। –

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