2011-10-20 14 views
6

मैं jqGrid में चुनी गई पंक्ति पर पंक्ति वस्तु कैसे प्राप्त करूं? मुझे वास्तविक वस्तु की आवश्यकता है, सेलव्यू नहीं। मैं प्रलेखन के माध्यम से चला गया है लेकिन एक विधि नहीं मिल सका जो मुझे पंक्ति वस्तु देगी। चूंकि मैं कस्टम फॉर्मेटर्स का उपयोग करता हूं, सेलवेल्यू काम नहीं करेगा।jqGrid पंक्ति ऑब्जेक्ट पर SelectRow

उत्तर

9

आप custom formatter को लागू करने और या getCell के संबंध में सेल मूल्य प्राप्त करना चाहते हैं getRowData आप unformat समारोह भी लागू करने के लिए की है।

यह स्पष्ट नहीं है कि "मुझे वास्तविक वस्तु की आवश्यकता है, सेलव्यू नहीं"। यह भी अस्पष्ट है कि datatype आप उपयोग करते हैं, भले ही आप loadonce: true विकल्प का उपयोग करें या नहीं और यदि आप सर्वर से डेटा लोड करते हैं जिसमें डेटा को सर्वर पर प्रारूपित किया जाएगा।

यदि आप datatype: 'local' का उपयोग करते हैं या loadonce: true का उपयोग करते हैं तो आंतरिक data और _index पैरामीटर भर दिए जाएंगे। rowid द्वारा ग्रिड से कच्चे डेटा प्राप्त करने के लिए आप

var rowData = this.p.data[this.p._index[rowid]] 

या

var grid = $(this), 
    localdata = grid.jqGrid('getGridParam', 'data'), 
    indexes = grid.jqGrid('getGridParam', '_index'), 
    rowData = localdata[indexes[rowid]]; 

उपयोग कर सकते हैं आप सर्वर से datatype: 'local' उपयोग नहीं करते हैं या loadonce: true का उपयोग करें और लोड डेटा केवल आप वस्तु को बचा सकता है एक चर (सर्वर में) में सर्वर प्रतिक्रिया से डेटा का प्रतिनिधित्व किया। loadComplete इवेंट हैंडलर में data पैरामीटर है जो सर्वर से पोस्ट किया गया कच्चा डेटा है। तो आप किसी ऑब्जेक्ट में आवश्यक डेटा को सहेजने में सक्षम हैं (एक मानचित्र में जो पंक्तिबद्ध द्वारा yut ऑब्जेक्ट प्राप्त करेगा) और इसे onSelectRow ईवेंट हैंडलर के अंदर उपयोग करें।

onSelectRow: function(rowid) { 
    var row = $(this).getLocalRow(rowid); 
    // do something with row 
} 

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

+0

इसके लिए धन्यवाद, यह मुझे सही दिशा में इंगित करता है – SystemParadox

+1

@ सिस्टम पाराडॉक्स: आपका स्वागत है! मैं आपको सलाह देता हूं कि अतिरिक्त रूप से 'getLocalRow' विधि की जांच करें। कुछ छोटे कोड उदाहरणों और अतिरिक्त जानकारी के लिए [उत्तर] देखें (http://stackoverflow.com/a/9145342/315935) या [एक और एक] (http://stackoverflow.com/a/10362294/315935)। [स्रोत कोड] (विधि के https://github.com/tonytomov/jqGrid/blob/v4.3.2/js/grid.base.js#L3494-3505) बहुत छोटा है और मैं आपको इसे पढ़ने की भी सलाह देता हूं । – Oleg

+0

मुझे स्वीकार करना है, मैंने हमेशा इसे अनदेखा किया है, लेकिन लोडकंपलेट पर बाद में उपयोग के लिए डेटा संग्रहीत करना बहुत मूल्यवान कार्यक्षमता है। चूंकि मैंने डेटाटाइप का कभी भी उपयोग नहीं किया: 'स्थानीय' या लोडोनस: सच। मुझे आश्चर्य भी है कि यह किसी प्रकार की 'कच्चीदाता' संपत्ति में डिफ़ॉल्ट रूप से क्यों संग्रहीत नहीं होता है। ओलेग को इंगित करने के लिए वैसे भी धन्यवाद। +1 – Steven

3

आप getInd और getLocalRow तरीकों का उपयोग कर सकते हैं

ondblClickRow : function(rowid,iRow,iCol,e) { 
    $($("#completeDetail").getInd(rowid,true)).find(":first").click(); 
} 

यह पंक्ति का समाधान नहीं होता बढ़ पंक्ति की तलाश में लगता है

इस फ़ंक्शन का उपयोग करें ->getInd(rowid,rowcontent)

यह विधि id=rowid द्वारा निर्दिष्ट ग्रिड तालिका में पंक्ति की अनुक्रमणिका देता है जब पंक्ति सामग्री गलत (डिफ़ॉल्ट) पर सेट होती है। यदि rowcontent सत्य पर सेट किया गया है, तो यह प्रविष्टि पंक्ति ऑब्जेक्ट देता है। यदि पंक्तिबद्ध नहीं पाया जा सकता है, तो फ़ंक्शन झूठा लौटाता है।