2013-09-09 3 views
2

У меня есть следующая проблема. Мой веб-сервис REST возвращает json как этот:Dojo + DataGrid + JsonRest + custom json

{"response": {"headers": "", "items": {"item": [{"@ id": "1", "email" : "админ @ админ", "Имя": "администратор", "фамилия": "администратор", "Вход": "админ"}, { "@ идентификатор": "2", "электронная почта": "Беннет @ Tawney .com "," firstname ":" Bennett "," lastname ":" Tawney "," login ":" bennettabcd "} ...

Как заставить DataGrid отображать элементы из json выше? Я не могу изменить веб-сервис REST, он должен вернуть jsons в этом формате. Http-запрос в порядке, и сервер возвращает мой json, но datagrid не заполнен. У вас есть идея?

Мой "додзё" код ниже:

 

     var store = new Cache(new JsonRest({ 
      target: settings.vars.API_URL + "/frapi/users/load", 
      start: page * rows, 
       count: 10, 
       sort: [ 
        {attribute: "id", descending: true} 
       ], 
       headers: { 
        "Content-Type": "application/json" 
       } 
     }), Memory()); 

     grid = new DataGrid({ 
      store: new ObjectStore({objectStore: store}), 
      queryOptions: {}, 
      structure:[{ 
       defaultCell: { 
        width: "auto" 
       }, 
       cells: [ 
        {name: "Id", field: "id", width: "50px"}, 
        {name: "Login", field: "login"}, 
        {name: "Email", field: "email", width: "200px"}, 
        {name: "Firstname", field: "firstname"}, 
        {name: "Lastname", field: "lastname"} 
       ] 
      }]    
     }, "grid"); 

     grid.startup(); 

Заранее спасибо

ответ

1

ОК, я нашел решение. См. Код ниже:

 

    var extractItemsFromResponse = function(deferred) { 
     return deferred.then(function(response) { 
      return response.response.items.item; 
     }); 
    }; 

    aspect.after(store, "query", extractItemsFromResponse); 

Я надеюсь, что это вам поможет.

Смежные вопросы