2010-10-27 12 views
5

में पहुँच पंक्ति डेटा हम डेटाप्रकार json के साथ एक ग्रिड है।jqGrid कस्टम फ़ॉर्मेटर

हम निम्नलिखित कस्टम फ़ॉर्मेटर है:

function opsFormatter (cellvalue, options, rowObject){ 
    '<a title=MA href=javascript:showDialog(' + rowObject[5] + ')>MA<a>' + '&nbsp;&nbsp;'; 
} 
rowObject[5] के बजाय

कोई ऑब्जेक्ट नोटेशन जहाँ हम वास्तविक स्तंभ नाम ("खाता") निर्दिष्ट कर सकते हैं? Ie: rowObject.account

इस ग्रिड परिभाषा है:

$("#grid-pos").jqGrid({ 
    colNames:['Product', 'Type','Expiry', 'Put Call', 'Strike', 'Account','Long','Short', 'Open Qty', 'LTD', 'Operations'], 
    colModel :[ 
       {name:'product', index:'product', width:75, sortable:false}, 
       {name:'type', index:'type', width:50, align:'right', sortable:false}, 
       {name:'expiry', index:'expiry', width:60, align:'right',stype:'select', searchoptions:{dataUrl:'expiry_select.htm'}, sortable:false}, 
       {name:'putCall', index:'putCall', width:65, sortable:false}, 
       {name:'strike', index:'strike', sorttype: 'float', width:70, sortable:false}, 
       {name:'account', index:'account', width:70, sortable:false}, 
       {name:'long', index:'long', width:55, align:'right', sortable:false}, 
       {name:'short', index:'short', width:55, align:'right', sortable:false}, 
       {name: 'openQty', index:'openQty', width:80, align:'center', formatter:closeoutFormatter, sortable:false}, 
       {name:'LTD', index:'LTD', width:65, align:'right', sortable:false}, 
       {index:'operations', width:105, title:false, align: 'center', formatter:opsFormatter, sortable:false} 
       ], 
       pager: '#div-pos-pager', 
       caption: 'Positions' 
}); 

??

उत्तर

11

यह मेरे लिए पूर्ण सही व्यवहार लगता है। rowObject पैरामीटर का मान ऑब्जेक्टcolModel की 'नाम' संपत्ति में परिभाषित समान नाम वाले गुण हैं। संपत्ति account वहां से एक है। मुझे लगता है कि गलतफहमी custom formatter के दस्तावेज के निम्न भाग से आते हैं:

rowObject - एक पंक्ति में डेटा का प्रतिनिधित्व से डेटाप्रकार विकल्प निर्धारित प्रारूप में । ... अगर हम डेटाप्रकार है: json/jsonstring - rowObject सरणी, jsonReader

से नियम

शायद शब्द सरणी गलतफहमी के इस प्रकार के अनुसार प्रदान की है। जावास्क्रिप्ट rowObject.account में rowObject["account"] के रूप में इस्तेमाल किया जा सकता है, लेकिन एक rowObject की account संपत्ति का उपयोग करने की rowObject[5] उपयोग नहीं कर सकते। यह दस्तावेज में स्पष्ट लिखित वाक्य नहीं है। यदि आप मूल अंग्रेजी स्पीकर हैं तो आप पाठ को दोबारा सुधार सकते हैं ताकि इसमें कोई गलतफहमी न हो। दस्तावेज विकी है और कोई भी व्यक्ति किसी भी पाठ को बदल सकता है।

+1

मैं क्या कहने की कोशिश कर रहा था कि 'rowObject [5]' काम करता है लेकिन 'rowObject [" खाता "]' और 'rowObject.account' काम नहीं है। मैं क्या चाहता हूं कि उन अंतिम दो प्रकारों का उपयोग करने में सक्षम होना .. –

+0

ऐसा इसलिए है क्योंकि हम 'loadOnce: true' का उपयोग कर रहे हैं? हो सकता है कि यह एक समस्या का कारण बनता है क्योंकि यह सेटिंग ग्रिड डेटाटाइप को 'स्थानीय' होने का कारण बनती है .. दस्तावेज ऑब्जेक्ट नोटेशन के बारे में कुछ बताता है जो केवल JSON डेटाटाइप के लिए उपलब्ध है .. –

+0

@Marcus: मेरे उदाहरणों में मैं 'rowObject जैसे नोटेशन का उपयोग कर सकता हूं। account'। आपको परीक्षण JSON डेटा और अधिक पूर्ण 'jqGrid' कोड पोस्ट करना चाहिए जिसका उपयोग आपकी समस्या को पुन: उत्पन्न करने के लिए किया जा सकता है। – Oleg