2011-05-05 3 views
2

Может кто-нибудь объяснить мне, почему это не работает? Никаких ошибок.Как связать сетку JSON с EXTJS

Ext.onReady(function() { 
    //Ext.Msg.alert('Status', 'Changes saved successfully.'); 
    Ext.define('Bond', { 
     extend: 'Ext.data.Model', 
     fields: ['CUSIP', 'DESCRIPTION', 'COUPONRATE', 'ASKPRICE'] 
    }); 

    var store = new Ext.data.Store({ 
     model: 'Bond', 
     proxy: { 
      type: 'ajax', 
      url: 'http://localhost:3197/Home/GetSecondaryOfferings', 
      reader: { 
       type: 'json', 
       root: 'items', 
       totalProperty: 'totalCount' 
      } 
     } 
    }); 
    store.load(); 

    var grid = new Ext.grid.GridPanel({ 
     store: store, 
     columns: [ 
      { header: 'CUSIP', dataIndex: 'CUSIP' }, 
      { header: 'Description', dataIndex: 'DESCRIPTION', width: 100 }, 
      { header: 'COUPONRATE', dataIndex: 'COUPONRATE', width: 100 }, 
      { header: 'ASKPRICE', dataIndex: 'ASKPRICE', width: 100 } 
     ], 
     renderTo: 'example-grid', 
     width: 1000, 
     autoHeight: true, 
     title: 'JSON SIMPLE 2' 
    }).render(); 
}); 

это то, что мой объект JSON выглядеть следующим образом:

{"totalCount":3316,"items":[{"CUSIP":"989701AL1","DESCRIPTION":"ZIONS BANCORPORATIONSB NT 5.65000% 05/15/2014","COUPONRATE":" 5.650","ASKPRICE":" 104.450"}]} 

Сетки как раз не заселяют, и я могу видеть JSON возвращается ко мне с сервера.

Мысли?

ответ

2

Проблема заключается в том, что вы используете магазин с типом alax/json. Если у вас есть URL-адрес перекрестного домена, JSON.

Решение: Убедитесь, что тестовые файлы размещены с помощью HTTP из того же домена, и все должно быть хорошо:

var store = new Ext.data.Store({ 
     model: 'Bond', 
     proxy: { 
      type: 'ajax', 
      url: 'SOData.json', 
      reader: { 
       type: 'json', 
       root: 'items', 
       totalProperty: 'totalCount' 
      } 
     } 
    }); 
+0

Я на самом деле создаю JSON по запросу динамически. Я могу заставить его работать с файлом JSON, но не тогда, когда я возвращаю JSON из ASP MVC. Все находится в одной области. (LOCALHOST) – Patrick

+1

Попробуйте сделать URL * БЕЗ * указанным сервером (например, только относительным), в противном случае запрос JSON завершится неудачно, потому что сервер считает, что это скрипт межсайтового сайта. Look-up jsonP - это еще один метод, способный работать с несколькими сайтами. –

1

вам необходимо изменить свой сервис, чтобы вернуться JSONP и изменить тип хранилища, чтобы быть JSONP, что будет решить проблему,

Пожалуйста, дайте мне знать, если вам нужно больше информации

1

попробовать этот способ

var URLdata = window.location.protocol + "//" + window.location.host + "/" + "bigdata-dashboard" + "/conf/" +"survey.json" ; 
     var storedata = new Ext.data.Store({ 
      fields: ['appeId','survId','location','surveyDate','surveyTime','inputUserId'], 
      proxy: { 
       type: 'rest', 
       url:URLdata, 
       reader: { 
        type: 'json', 
        root: 'items', 
        // totalProperty: 'totalCount' 
       } 
      } 
     }); 
      storedata.load(); 


     // create the grid 
     var grid = new Ext.grid.GridPanel({ 
      store: storedata, 
      columns: [ 
       {header: "appeId", width: 60, dataIndex: 'appeId', sortable: true}, 
       {header: "survId", width: 60, dataIndex: 'survId', sortable: true}, 
       {header: "location", width: 60, dataIndex: 'location', sortable: true}, 
       {header: "surveyDate", width: 100, dataIndex: 'surveyDate', sortable: true}, 
       {header: "surveyTime", width: 100, dataIndex: 'surveyTime', sortable: true}, 
       {header: "inputUserId", width:80, dataIndex: 'inputUserId', sortable: true} 
      ], 
      renderTo:'example-grid', 
      width:470, 
      height:200 
     });