试图使服务器端分组与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中的数据和总计是否被忽略?任何帮助将不胜感激...