2010-08-25 15 views
9

मेरे पास लोडऑनस के साथ एक जेक्यूजीड है: सत्य (इसलिए यह सभी क्लाइंट पक्ष है) और पेजिंग सक्षम (साथ ही, 20 पेज कहें)।JQGrid प्रोग्रामिक रूप से ग्रिड पंक्ति का चयन करें

मैं एक पंक्ति निर्दिष्ट करना चाहता हूं (प्रोग्रामेटिक रूप से, उपयोगकर्ता इनपुट के बिना) और मेरी ग्रिड निर्दिष्ट पंक्ति का चयन करने के लिए संबंधित पृष्ठ पर नेविगेट करें।

क्या यह वर्तमान जेक्यूग्रीड के साथ संभव है?

मैंने खोज और फ़िल्टर में देखा है, लेकिन यह केवल नई पंक्तियों के साथ ग्रिड को पुनः लोड करता है - मुझे अपने पृष्ठ और संरचना को बनाए रखने के लिए मेरे ग्रिड को सही पृष्ठ पर नेविगेट करने की आवश्यकता है।

मैं अपनी ग्रिड संरचना को अनुकूलित करने की प्रक्रिया में हूं, इसलिए किसी भी बदलाव की आवश्यकता है (सर्वर पक्ष के लिए क्लाइंट साइड कहें) संभव होगा।

+0

मुझे यह पता है कि इसे कैसे प्राप्त किया जाए, लेकिन मैं अभी भी जानना चाहता हूं कि कोई अंतर्निहित तरीका है या नहीं। मेरा विचार: 1. ए = प्रति पेजर के तत्वों की कुल संख्या प्राप्त करें। 2. बी = ग्रिड/ में कुल तत्व प्राप्त करें 3. पृष्ठ बी पर नेविगेट करें 4. पूर्वनिर्धारित आईडी के साथ तत्व का चयन करें। – Bob

+0

क्या आपने पेड़ ग्रिड के साथ सुझाए गए वही परीक्षण किया है? सर्वर के किसी भी अनुरोध के बिना सभी काम करता है ('loadonce: true' के मामले में)? – Oleg

+0

@ ओलेग: अरे वहाँ! मैं अगले कुछ दिनों में आपके सुझावों को लागू कर दूंगा। वर्तमान में आज मेरे रिलीज के लिए बग फिक्सिंग। – Bob

उत्तर

17

क्योंकि आप loadonce:true का उपयोग करते हैं, तो आप सर्वर पर डेटा तैयार करते हैं। सर्वर की तरफ आप तय कर सकते हैं कि कौन सी पंक्ति का चयन किया जाना चाहिए। सर्वर की तरफ आप आसानी से गणना कर सकते हैं कि कौन सा पृष्ठ चयनित पंक्ति होगी। चयनित पंक्ति की आईडी और चयनित पृष्ठ जिसे आप उदाहरण के लिए कर सकते हैं userdata के हिस्से के रूप में शामिल हैं। तो सर्वर से भेजे गए डेटा सकता है ऐसा दिखाई देता है:

{ 
    "total": 5, 
    "page": 1, 
    "records": 107, 
    "rows": [ 
     ... 
    ], 
    "userdata": { 
     "page": 3, 
     "selId": 24 
    } 
} 

की loadComplete अंदर आप

loadComplete: function(data) { 
    if (jQuery("#list").getGridParam('datatype') === "json") { 
     // data.userdata is the same as jQuery("#list").getGridParam('userData'); 
     var userdata = jQuery("#list").getGridParam('userData'); 
     var curPage = jQuery("#list").getGridParam('page'); // is always 1 
     if (curPage !== userdata.page) { 
      setTimeout(function(){ 
       jQuery("#list").setGridParam(
        { page: userdata.page }).trigger("reloadGrid"); 
       jQuery("#list").setSelection (userdata.selId, true); 
      },100); 
     } 
     else { 
      jQuery("#list").setSelection (userdata.selId, true); 
     } 
    } 
} 

एक काम कर रहे उदाहरण निम्नलिखित के बारे में क्या कर सकते हैं आप http://www.ok-soft-gmbh.com/jqGrid/DataToSelect.htm और http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect.htm पर देख सकते हैं।

अद्यतन: Free jqGridmultiPageSelection:true विकल्प संस्करण 4.10.0 साथ strarting का समर्थन करता है। विकल्प ग्रिड में कई पंक्तियों के चयन को बहुत आसान सेट करने की अनुमति देता है (और यह बहुत तेज़ी से काम करता है, क्योंकि यह ग्रिड के शरीर बनाने के दौरान चयन स्थिति सीधे सेट करता है)। the answer और the demo और the readme to 4.10.0 देखें।

+0

सामान्य ओलेग के रूप में धन्यवाद! क्या हर बार जब मैं किसी दूसरे पृष्ठ पर नेविगेट करना चाहता था, तो क्या इस विधि को सर्वर पर ग्रिड को फिर से बनाने की आवश्यकता होगी? मेरे कार्यक्रम में एक पेड़ और ग्रिड है। जब कोई उपयोगकर्ता पेड़ में कोई तत्व चुनता है तो ग्रिड उस तत्व की खोज करेगा और इसे ग्रिड में चुनें। – Bob

+1

हाय! क्योंकि आप 'loadonce: true' का उपयोग करते हैं, केवल पहला लोड सर्वर से होगा। मैं 'लोडकंपलेट' में 'गेटग्रिडम (' डेटाटाइप ') === "जेसन" 'का परीक्षण करता हूं क्योंकि jqGrid" स्थानीय "में बदल जाता है और अगले ताज़ा (पेजिंग, सॉर्टिंग, फ़िल्टरिंग/सर्चिंग) में सभी बिना सर्वर के स्थानीय काम करता है। पेड़ ग्रिड के साथ मुझे कोई अनुभव नहीं है, लेकिन क्योंकि इसमें एक ही jqGrid एपीआई है, सभी को भी काम करना चाहिए या एक ही विचार के आधार पर कोई भी संबंधित कोड संशोधन कर सकता है। – Oleg

+0

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

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