2010-10-14 8 views
19

आप ग्रिड कैसे बना सकते हैं लेकिन कोई डेटा लोड नहीं कर सकते?jqGrid - शुरू में किसी भी डेटा को लोड न करने के लिए ग्रिड सेट कैसे करें?

यदि मैं url विकल्प छोड़ देता हूं तो loadError कॉलबैक ट्रिगर किया जाता है।

वर्तमान में हम url:NoData.json सेट करते हैं जहां NoData.json एक स्थिर फ़ाइल है जिसमें कोई पंक्ति नहीं है।

समस्या हमारे loadComplete कॉलबैक में है, यदि ग्रिड में कोई डेटा नहीं है तो हम एक संदेश को डिस्प्ले करना चाहते हैं - सिवाय इसके कि हम इस संदेश को प्रारंभिक लोड पर प्रदर्शित नहीं करना चाहते हैं। इस प्रकार वर्तमान में हम इस संभालता है:

//jqGrid load complete handler 
function loadComp(grid) { 
    if (grid.getGridParam("url") != "NoData.json" && grid.getGridParam("records") == 0) { 
     setStatus("Your search did not return any results"); 
    } 
} 

यह सिर्फ एक छोटे से hacky लगता है .. बस ग्रिड शुरू में किसी भी डेटा लोड नहीं करना चाहते हैं।

कोई भी विचार?

उत्तर

31

आपको शुरुआत में datatype: 'local' का उपयोग करना चाहिए। फिलहाल जब आप डेटा लोड करने के लिए की जरूरत है आप बदलना चाहिए datatypejson करने के लिए या xml:

$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
+0

कोशिश की - समस्या 'डेटाटाइप: स्थानीय 'और' यूआरएल 'के साथ है, मेरा' लोड पूर्ण 'कॉलबैक अभी भी कहा जाता है। मैं ऐसे दृष्टिकोण की उम्मीद कर रहा था जो कॉलबैक को ट्रिगर नहीं करेगा - या कॉलबैक में कम से कम एक क्लीनर तरीका यह निर्धारित करने के लिए कि यह ग्रिड लोड होने का प्रारंभिक समय है। –

+4

@ मार्कस: कारणों से 'लोडकंपलेट' इवेंट हैंडल को सभी स्थितियों में बुलाया जाएगा। यदि आप सर्वर से लोड होने के मामले में केवल एक संदेश दिखाना चाहते हैं तो आप केवल संदेश प्रदर्शित कर सकते हैं यदि 'डेटाटाइप' "जेसन" के बराबर है जैसे http://stackoverflow.com/questions/3564898/jqgrid-programatically- चयन करें -ग्रिड-पंक्ति/3571392 # 3571392 – Oleg

+2

'grid.getGridParam ('डेटाटाइप') ===" जेसन "' समाधान अच्छी तरह से काम किया .. –

18

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

मैं पृष्ठ लोड होने पर डेटा के AJAX अनुरोध को रोकने के लिए कॉलबैक ईवेंट loadBeforeSend का उपयोग कर रहा हूं। मेरा कॉलबैक फ़ंक्शन स्वयं को हटा देता है ताकि इसे केवल एक बार निष्पादित किया जा सके।

loadBeforeSend: function (xhr, settings) { 
    this.p.loadBeforeSend = null; //remove event handler 
    return false; // dont send load data request 
} 
+0

मैं 20 बार ऊपर उठाने के लिए कहां जाऊं? –

+0

यह जवाब क्यों नहीं है मैंने अपने सभी ग्रिड (जिन्हें लोड करने की आवश्यकता नहीं है) पर इसका उपयोग किया है –

+0

बस जो मैं ढूंढ रहा था, धन्यवाद! – masterwok

-2

जब आप ग्रिड प्रारंभ करते हैं तो URL सेट न करें। SetGridParam फ़ंक्शन का उपयोग करके ग्रिड लोड करने से पहले URL सेट करें।

यह मेरे लिए काम करता है।

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