Попытка заставить группировку на стороне сервера работать с Kendo Grid и OData.
У меня немного необычная ситуация: я не хочу использовать JSonP и хотел бы, чтобы конечная точка была в моем контроллере MVC. Затем приложение направит запрос к API с использованием API-интерфейса, сохраненного в конфигурации.
Метод контроллера, показанный ниже:
[HttpGet]
public ActionResult GetMaintenanceLogs()
{
var query = Request.QueryString.ToString();
var results = proxy.GetMaintenanceLogs(query);
results.AggregateResults = new List<Kendo.Mvc.Infrastructure.AggregateResult>();
return Json(results);
}
Конфигурация сетки, представленная ниже:
@(Html.Kendo().Grid<FirstStrike.Maintenance.Services.Models.MaintenanceLog>()
.Name("maintenanceLogGrid")
.DataSource(dataSource => dataSource
.Custom()
.Type("odata")
.Transport(t => t.Read(r => r.Url("/History/GetMaintenanceLogs").Type(HttpVerbs.Get).DataType("json")))
.Schema(a => a.Model(b =>
{
b.Id(c => c.MaintenanceLogId);
b.Field("MaintenanceLogDate", typeof(DateTime));
b.Field("MaintenanceTaskDesc", typeof(String));
b.Field("MaintenanceUserName", typeof(String));
b.Field("MaintenanceTaskParams", typeof(String));
})
.Data("Data")
.Total("Total"))
.ServerAggregates(true)
.ServerSorting(true)
.ServerPaging(true)
.ServerFiltering(true)
.PageSize(10)
)
и т.д ...
Метод прокси, показанный ниже:
public DataSourceResult GetMaintenanceLogs(String query)
{
var service = ServiceHelper.GetODataClaimService();
var url = service.MaintenanceLogs.ToString();
var qor = service.ExecuteSync<MaintenanceLog>(url + query);
return new DataSourceResult() { Data = qor.ToList(), Total = Convert.ToInt32(qor.TotalCount) };
}
Проблема, с которой я сталкиваюсь, заключается в том, что все работает идеально. Запрос выполняет и извлекает 10 записей и общее количество. Затем данные передаются обратно клиенту, где я получаю сообщение об ошибке JavaScript.
Ошибка видна ниже:
не может прочитать свойство 'length' неопределенной сетки кендо
Что мне здесь не хватает.
Ожидаемый результат отличается от того, что я отправляю? Ожидается ли ответ OData? Данные и итоги игнорируются в HTML Helper при использовании OData. Любая помощь с благодарностью ...