2009-11-27 22 views
7

GridPanel'in sütun modeline karmaşık bir json nesnesini (iç içe geçmiş özellikleriyle) bağlamaya çalışıyorum. IE:ext js - Karmaşık bir json nesnesine ColumnModel bağlama

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

yani benim columnmodel olurdu bir şey

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'} 
    ]); 

gibi: Ben, diyelim ki, report.customer_name ve report.report_data.customer.desc test verisi için ızgaraları sütunları eşlemek istediğiniz Detay sütununun dataIndex'ini 'report_data.details' olarak denedi ama işe yaramadı ...

Birisi bana bunun yapılıp yapılamayacağını söyler mi, eğer öyleyse bana bir örnek attı mı? Veya okuyamadan önce nesneyi 'düzleştirmek' gerekiyor mu? çok teşekkürler!

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

Sunulan sütun modeli daha sonra da 'detay' bir dataIndex başvurmak olacaktır: Eğer bir JsonReader veya JsonStore kullanıyorsanız

cevap

10

kaydederken açıklamasında iç içe geçmiş bir nesne değerinin bir özelliğe bir eşleme kurabilir bu sütun.

Sunucunuzun gönderdiği veriler, örneğinizin içerdiği verilerden biraz farklı olmalıdır.

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

mükemmel teşekkürler yardımınız :) sunucu boş report_data neler varsa – 29er

+0

için çok: Yukarıdaki okuyucu formun bir veri nesnesi tüketmek ki? Marketi frenliyormuş gibi görünüyor. Herhangi bir fikir ? – jujule

+0

Eğer işleyici hile ile "kesmek" olabilir @jujule: '' 'javascript fonksiyon get_report_data (report_data) { if (! Report_data = null) { dönüş report_data.detail; } dönüş "" } ' ve daha sonra ızgara: ' JavaScript {text "detay", oluşturucu: get_report_data, dataIndex: 'report_data'} ' soru şu: bu gitmek için doğru yol mu? –