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>

Проверявайки fiddler, получавам отговора, показан по-горе. Решетката обаче е празна. Ако кодирам твърдо данните в източника на данни, както по-долу, мрежата се попълва, така че изглежда, че въпреки че отговорът е получен, мрежата не знае как да го анализира.

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/продукти'; var ds = new kendo.data.DataSource({ транспорт: { четене: { 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