Kendo ASP.NET MVC Grid и WebAPI - данные не отображаются в сетке

У меня есть APIController с HttpGet, который возвращает этот ответ JSON:

[{"Customer":"AAAA","Office":"Off1"},{"Customer":"AAAA","Office":"Off2"}]

Он размещен на удаленном сервере.

Я тестирую свой локальный клиент, подключаюсь к этому серверу следующим образом:

<div class="k-content">
    <div id="Grid"></div>
</div>

<script type="text/javascript">
var dataSource = new kendo.data.DataSource({
    transport: {
        read: {
            url: "http://<remoteserver>/<apicontroller>/<actionMethod>",
            dataType: "json",
            data: { customerFilter: "AAAA", topFilter: "10" }
        }
    },
   schema: {
        model: {
            Customer: "Customer",
            Office: "Office"
        }
   }
});

$(document).ready(function () {
        $("#Grid").kendoGrid({
            dataSource: dataSource,
            height: 400,
            columns: [
                { field: "Customer" },
                { field: "Office" }
            ]
        });
    });
</script>

Проверяя скрипач, я получаю ответ, показанный выше. Однако сетка пуста. Если я жестко кодирую данные в источнике данных, как показано ниже, сетка заполняется, поэтому кажется, что даже если ответ получен, сетка не знает, как его анализировать.

var dataSource = new kendo.data.DataSource({
        data:
          [{"Customer":"AAAA","Office":"Off1"},{"Customer":"AAAA","Office":"Off2"}],
        schema: {
            model: {
                Customer: "Customer",
                Office: "Office"
            }
        }

У кого-нибудь есть идеи, в чем может быть проблема?

Спасибо.


person tbgox    schedule 21.08.2013    source источник


Ответы (2)


Ваша конфигурация источника данных неверна. За документацией Kendo UI может быть трудно следить, но вот как вам нужно определить источник данных:

var dataSource = new kendo.data.DataSource({
  transport: {
    read: {
      url: "http://<remoteserver>/<apicontroller>/<actionMethod>",
      dataType: "json",
      data: { customerFilter: "AAAA", topFilter: "10" }
    }
  },
  schema: {
    model: {
      fields: {
        Customer: {},
        Office: {}
      }
    }
  }
};
person Brett    schedule 22.08.2013
comment
не нужно указывать URL полностью. Вы можете просто указать uri. пример: var uri = 'api / products'; var ds = new kendo.data.DataSource ({transport: {read: {url: uri, dataType: json}}, - person PSR; 30.01.2014

Не нужно указывать URL полностью. Вы также можете просто указать uri.

пример:

    var uri = 'api/products';      
  var ds = new kendo.data.DataSource({
      transport: {
          read: {
              url:uri,
              dataType: "json"
          }
          }
   });
person PSR    schedule 30.01.2014