2010-10-03 13 views
6

मुझे userData से jqgrid पर जाने की आवश्यकता है, लेकिन यह कैसे करना है इसके कोई उदाहरण नहीं मिल सकते हैं।jqgrid में userData को कैसे पढ़ा जाए?

सर्वर से भेजा गया:: यहाँ मेरी प्रयास है

{ total: 25, 
    page: currentpage, 
    userData: {foo: 'bar'}, 
    rows: myRows } 

और jqgrid में:

var data = jQuery("#grid").getGridParam('userData'); 

मैं userData कैसे भेज सकते हैं और jqgrid से इसे पढ़ सकते हैं?

संपादित करें: मुझे पता है कि मेरा userData भेजा जा रहा है, क्योंकि मैं इसे Fiddler में देख सकता हूं। मुझे लगता है कि मैं क्लाइंट साइड पर इसे पढ़ने के लिए बस अटक गया हूं।

उत्तर

16

सामान्य में userData के उपयोग बहुत सरल है। jqGrid आपको किसी भी अतिरिक्त डेटा से सर्वर भेजने के लिए समर्थन देता है जो jqGrid डेटा के साथ सहेजा जाएगा। तो यदि jqGrid सर्वर से लौटाए गए डेटा को पार करता है तो यह userdata (userData के लिए नहीं दिखता है !!!) और सहेजें आंतरिक पैरामीटर userData में है।

{ "total":25, 
    "page":1 
    "records":107, 
    "userdata": {"foo": "bar"}, 
    "rows": [...] } 

सावधान: इनपुट डेटा में सामान्य प्रॉपर्टी होना चाहिए userdata और नहींuserData आप की तरह वर्तमान में है। यदि आप userData या myData का उपयोग अपने additional data के साथ संपत्ति नाम के रूप में करते हैं तो आप इनपुट प्रॉपर्टी jsonReader: {userdata: "userData"} या jsonReader: {userdata: "myData"} के डिफ़ॉल्ट नाम को ओवरराइट कर सकते हैं।

userData के मानक उपयोग से एक jqGrid में displaying of the footer के लिए है। आप किसी भी अन्य प्रस्ताव के लिए डेटा का उपयोग कर सकते हैं। another answer में यह दिखाया गया है कि सर्वर से लोडिंग डेटा के बाद सीधे कुछ पंक्ति/पंक्तियों का चयन करने के लिए userData का उपयोग कैसे करें।

आप loadonce:true पैरामीटर का उपयोग करते हैं, तो userData के उपयोग ताकि आप बाहरी वस्तु में वहाँ को बचाने के लिए है, क्योंकि पहले लोड पैरामीटर userData से डेटा हटा दिया जाएगा के बाद थोड़ा और अधिक मुश्किल हो जाएगा।

कारणों से आप डेटा लोड होने के बाद jQuery("#grid").getGridParam('userData') के संबंध में userData तक पहुंच सकते हैं। तो आपको इसे loadComplete ईवेंट हैंडल या बाद में करना चाहिए। loadComplete इवेंट हैंडल के अंदर से आप सभी डेटा तक पहुंच सकते हैं जो loadComplete ईवेंट के data पैरामीटर के माध्यम से सर्वर से आपको भेजे जाते हैं। तो आप कहीं और अतिरिक्त डेटा पढ़ सकते हैं और वहां कहीं सेव कर सकते हैं।

+1

धन्यवाद।यदि कोई इसे बाद में पढ़ता है, तो सारांश यह है कि ग्रिडपाराम के बारे में बात करते समय यह 'उपयोगकर्ता डेटा' है, अन्यथा यह 'userdata' है। 'LoadComplete' ईवेंट हैंडलर में 'userdata' पढ़ें। 'UserData' के साथ' पोस्टडाटा 'सेट करने के लिए यह करें:' लोड पूर्ण: फ़ंक्शन (डेटा) {jQuery ("# ​​टिकटसूची")। सेट ग्रिडपाराम ({पोस्टडेटा: {foo2: data.userdata.foo}});} ' – royco

+0

@ स्लेक : आप 'jQuery ("# ​​ग्रिड") का भी उपयोग कर सकते हैं। GetGridParam (' userData ') 'loadComplete' के अंदर' loadComplete: function() {jQuery (" # टिकटसूची ")। SetGridParam ({postData: {foo2: jQuery ("# ​​ग्रिड")। GetGridParam ('userData')। foo}});} '। यह समझना केवल महत्वपूर्ण है कि सर्वर से भेजे गए डेटा में 'userdata' रखना होगा और डेटा jqGrid के' userData' पैरामीटर में सहेजा जाएगा। तो यह सुलभ हो सकता है 'getGridParam (' userData ') '। लेकिन सबसे महत्वपूर्ण बात यह है कि अब आपका प्रोग्राम काम करता है और 'userdata'/'userData' का उपयोग कर सकता है। :-) – Oleg

+0

आदमी मैं जेसन जनरेटर में उपयोगकर्ता डेटा के बजाय उपयोगकर्ता डेटा का उपयोग कर रहा हूं और मैं पागल हो रहा हूं, बहुत बहुत धन्यवाद! +1 – Neo

1

डिफ़ॉल्ट रूप से jqGrid इस प्रारूप में JSON स्वीकार करता है।

{"rows": 
    [{"foo":"bar"}] 
} 

और jqgrid विकल्प आप कुछ इस तरह करना होगा की स्थापना:

$("#cashflow-sheet").jqGrid({ 
    url:'bbc-json.html', 
    datatype: "json", 
     ... 
+0

आपकी पोस्ट के लिए धन्यवाद। मैं वास्तव में jqgrid ठीक काम कर रहा है और बिना किसी समस्या के पंक्तियों को प्रदर्शित कर सकते हैं। मैंने उस कोड को छोड़ दिया। मुझे समझ में नहीं आता कि jqgrid की 'userData' सुविधा का उपयोग कैसे करें। यह आपको सर्वर से ग्रिड में उपयोगकर्ता डेटा की एक सरणी भेजने देता है। – royco