Kendo网格服务器端分组不适用于OData

时间:2018-07-05 15:21:20

标签: kendo-ui odata

试图使服务器端分组与Kendo Grid和OData一起使用。 我有一种不寻常的情况,因为我不想使用JSonP,并且希望将终点放在我的MVC控制器中。然后,应用程序将使用存储在config中的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响应?使用OData时,HTML Helper中的数据和总计是否被忽略?任何帮助将不胜感激...

0 个答案:

没有答案