2013-07-30 4 views
1

Я был бы признателен за понимание проблемы, с которой я пытаюсь связать данные из удаленной службы (WebAPI) с сеткой Kendo с использованием источника данных Kendo. Когда я использую инструменты разработчика в Chrome, я вижу, что служба вызывается, и данные json возвращаются - проблема в том, что данные не отображаются в сетке.Bind Kendo Grid to Web API

Вот это HTML для очень простой страницы, содержащей только сетку:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 

    <link href="css/kendo.common.min.css" rel="stylesheet" /> 
    <link href="css/kendo.default.min.css" rel="stylesheet" /> 

    <script src="lib/jquery.min.js"></script> 
    <script src="lib/kendo.web.min.js"></script> 

</head> 
<body> 

    <div id="reportGrid"></div> 

    <script> 

     $(document).ready(function() 
     { 
      // Report datasource 
      var reportsDataSource = new kendo.data.DataSource({ 

       // Transport 
       transport: { 
        read: { 
         url: "http://localhost:54363/api/report", 
         dataType: "jsonp", 
         jsonpCallback: "reportCallback" 
        } 
       }, 

       // Schema 
       schema: { 
        model: { 
         fields: { 
          SerialNumber: { type: "string" }, 
          Version: { type: "number" }, 
          DateReceived: { type: "date" }, 
          Title: { type: "string" } 
         } 
        } 
       } 
      }); 


      $("#reportGrid").kendoGrid(
      { 
       dataSource: reportsDataSource 
      }); 


     }); 

    </script> 

</body> 
</html> 

Когда страница загружает веб-сервис называется и JSON извлекаться (я использую JSONP с сайта и службы находятся в разных домены). Служба вызывается и извлекается следующий JSON (я получаю это, исследуя ответ в Chrome).

[{"SerialNumber":"1","Version":2,"DateReceived":"2013-08-01T16:01:12.5828003+01:00",... 

Я действительно не понимаю, почему сетка не заселена.

+0

Как выглядит обратное? Вы уверены, что он возвращается как объект JSON, а не как неузнаваемая строка. – AntSpiteri

+0

Да, он возвращает правильно отформатированный json. Служба называется ожидаемым источником данных, она просто не заполняет сетку. – jongillster

+0

Можете ли вы разместить JSON, который вы получаете? – AntSpiteri

ответ

0

Я перешел на использование одаты, и все началось, как и ожидалось. Основная ошибка связана с тем, что возвращенный JSON из веб-службы не был правильно отформатирован - хотя для меня в жизни я не мог понять, что не так с тем, что возвращалось службой.

1

Если вы следуете инструкциям here, вы должны быть в состоянии сделать это.

+0

Спасибо за ссылку, я проверю ее и посмотрю, смогу ли я заставить сайт работать. – jongillster

0

У меня была такая же проблема.

Чтобы исправить это, просто добавьте свойство «data» в схему, где вы можете проверить, в каком формате вы получаете значения. Скорее всего, у вас есть что-то, обертывающее объект Data, и вам просто нужно вернуть список элементов.

schema: { 
    data: function (response) { 
     return response.Data; 
    } 
}, 

P.S. Иногда я просто ненавижу, сколько времени требуется для определения таких необязательных, но важных свойств пользовательского интерфейса Kendo. Я желаю, чтобы их документация была лучше.

+0

Не могу договориться подробнее. Я смотрю на падение Кендо ... – jongillster