2009-11-27 14 views
7

पर बाध्यकारी है, मैं एक जटिल जेसन ऑब्जेक्ट (नेस्टेड गुणों के साथ) को ग्रिडपेनल के कॉलम मॉडल में बांधने की कोशिश कर रहा हूं। आईई:एक्सटी जेएस - कॉलम मॉडेल एक जटिल जेसन ऑब्जेक्ट

> { 
>  "success": true , 
>  "total": "1", 
>  "result": 
>   { 
>    "report": { 
>     "customer_name": "cust one", 
>     "account_number": "", 
>     "report_data": { 
>      "detail": "these are details", 
>      "desc": "mydesc"       
>     } 
>    } 
>  } } 

कुछ तो मेरे columnmodel होगा

तरह
var colModel = new Ext.grid.ColumnModel([ 
     {header: "Customer", sortable: true, dataIndex: 'customer_name'}, 
     {header: "Account", width: 75, sortable: true, dataIndex: 'account_number'}, 
     {header: "Detail", width: 75, sortable: true, dataIndex:'HOW DO I DO THIS'} 
    ]); 

मैं: मैं, कहते हैं, report.customer_name और report.report_data.customer.desc परीक्षण डाटा के लिए ग्रिड स्तंभों मैप करना चाहते हैं विस्तार कॉलम के डेटा इंडेक्स को 'report_data.details' के रूप में आजमाया लेकिन यह काम नहीं किया ...

क्या कोई मुझे बता सकता है कि यह किया जा सकता है, और यदि ऐसा है, तो मुझे एक उदाहरण फेंक दें? या क्या मुझे इसे पढ़ने से पहले ऑब्जेक्ट को 'फ़्लैटन' करने की आवश्यकता है? बहुत बहुत धन्यवाद!

new Ext.data.JsonReader({ 
    root: 'result', 
    totalProperty: 'total', 
    fields: [ 
     {name: 'customer_name'}, 
     {name: 'account_number'}, 
     {name: 'detail', mapping: 'report_data.detail'} 
    ] 
}); 

आपके कॉलम मॉडल तो के लिए 'विस्तार' का संदर्भ होगा एक dataIndex:

उत्तर

10

आप एक JsonReader या JsonStore उपयोग कर रहे हैं आप रिकॉर्ड वर्णन में एक नेस्टेड वस्तु मूल्य की संपत्ति के लिए एक मानचित्रण स्थापित कर सकते हैं वह कॉलम

आपके सर्वर द्वारा भेजा गया डेटा आपके उदाहरण के उदाहरण से थोड़ा अलग होना होगा, हालांकि।

{ 
    "success": true, 
    "total": 1, 
    "result": [ 
     { 
      "customer_name": "cust one", 
      "account_number": "", 
      "report_data": { 
       "detail": "these are details", 
       "desc": "mydesc" 
      } 
     } 
    ] 
} 
+0

सही धन्यवाद आपकी मदद :) – 29er

+0

सर्वर एक अशक्त report_data है क्या हुआ अगर के लिए बहुत कुछ: ऊपर पाठक फार्म के एक डेटा वस्तु का उपभोग होगा? ऐसा लगता है कि यह स्टोर ब्रेक करता है। कोई उपाय ? – jujule

+0

@jujule आप दाता चाल के साथ "हैक" यह कर सकते हैं: '' 'जावास्क्रिप्ट समारोह get_report_data (report_data) { if (! Report_data = नल) { वापसी report_data.detail; } वापसी "" } '' ' और फिर ग्रिड में: ' '' जावास्क्रिप्ट {पाठ: "विस्तार", रेंडरर: get_report_data, dataIndex: 'report_data'} '' ' सवाल यह है: क्या यह सही तरीका है? –

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