2012-06-28 22 views
6

यह jqGrid के लिए जेसन प्रतिक्रिया बनाने के लिए मेरा कोड है और के लिए नया सेल सदस्य को परिभाषित करने के लिए कीवर्ड मुझे निम्नलिखित संदेश प्राप्त होता है "अंतर्निहित टाइप किए गए सरणी के लिए कोई सर्वश्रेष्ठ प्रकार नहीं मिला "।त्रुटि प्राप्त हुई "अंतर्निहित टाइप किए गए सरणी के लिए कोई सर्वश्रेष्ठ प्रकार नहीं मिला"

var resRows = results.Select(record => 
      new 
      { 
       id = record.Reference, 
       cell = **new** [] 
       { 
        record.Reference, 
        record.TradeDate.ToShortDateString(), 
        record.Currency1, 
        record.Currency2, 
        record.Notional.ToString(), 
        record.EffectiveDate.ToShortDateString(), 
        record.Quote.ToString()       
       } 
      }).ToArray(); 

मैं यहां क्या गलत कर रहा हूं? कि यदि सरणी में सभी डेटा आइटम एक ही प्रकार के थे (उदाहरण के

var resRows = results.Select(record => 

    new 
    { 
     id = record.Reference, 
     cell = new string [] 
     { 
      record.Reference, 
      record.TradeDate.ToShortDateString(), 
      record.Currency1, 
      record.Currency2, 
      record.Notional.ToString(), 
      record.EffectiveDate.ToShortDateString(), 
      record.Quote.ToString()       
     } 
    }).ToArray(); 

उत्तर

8

Reference, Currency1 और Currency2 मान लिया जाये कि तार कर रहे हैं, सिर्फ एक स्ट्रिंग सरणी के रूप में यह घोषित स्ट्रिंग) तो इस प्रकार का अनुमान लगाया गया था और संकलक ने नया [] शिकायत नहीं की थी।

+2

@ डी स्टेनली, मैंने यह किया और यह काम करता है! असल में, अगर ये तार नहीं थे, तो मैं केवल 'सेल = नई वस्तु [] {...} 'का उपयोग कर सकता था। –

1

यदि आप डेटा jqGrid के लिए (जैसे अपने कोड में) तैयार, आप अपने खुद jsonReader परिभाषित कर सकते हैं और सिर्फ सेल सरणी (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data) को छोड़:

jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: false, 
     userdata: "userdata" 
    }, 

तो कुछ की तरह:

var result = new 
{ 
    total = (int)count/grid.PageSize), 
    page = grid.PageIndex, 
    records = count, 
    rows = results.Select(record => 
        select new 
        { 
         Reference = record.Reference, 
         TradeDate = record.TradeDate, 
         .. 
        }).ToArray() 
} 
+0

"नया चुनें" को "नया" में बदलें – Andrej

0

यदि संग्रह के सदस्य कार्य हैं, तो यह अभी भी संकलक त्रुटि देता है। यहां तक ​​कि संग्रह में केवल एक फ़ंक्शन है!

var bads = new [] // COMPILER ERROR 
{ 
    Foo 
}; 

var goods = new Action[] // NO COMPILER ERROR 
{ 
    Foo 
}; 

//... 
public void Foo() { }