我正在使用ASP.NET MVC4和Kendo UI的MVC包装器(2013.2.830)。 我的目标是让服务器端分页/排序/过滤/分组全部与Kendo网格一起工作。我可以使分页/排序/过滤工作正常......但需要一些关于如何处理分组的建议。这是我到目前为止从网格调用的动作:
public ActionResult GetGridDataSource([DataSourceRequest] DataSourceRequest request)
{
// get the data using the values from the request
EntityCollection<CustomerEntity> customers;
int totalItemCount;
using (var proxy = new CustomerServiceProxy())
{
// NOTE: just an example...
// The service doesn't take in the kendo data types for sort/filters.
// They are transformed to data types that the service does use.
customers = proxy.FindCustomers(
request.Filters,
request.Sorts,
request.Page,
request.PageSize,
out totalItemCount);
}
// build the datasource using the view model
var dataSource = (from customer in customers
select new CustomerViewModel
{
CustomerName = customer.Name,
// etc
}).ToList();
// this code returns the data for the requested page correctly
var result = new DataSourceResult();
result.Total = totalItemCount;
result.Data = dataSource;
return Json(result, JsonRequestBehavior.AllowGet);
}
如果我使用var result = dataSource.ToDataSourceResult(request);
,那么一切正常,除了分页(第1页后没有数据返回给客户端)。似乎ToDataSourceResult()方法试图从dataSource中提取第2页,即使dataSource已经代表第2页。
理想情况下,我想使用ToDataSourceResult(),如果可以解决分页问题。 否则,我假设在设置result.Data属性之前我需要手动将分组应用于我的数据源,以便返回的JSON格式正确。有没有Kendo功能可以做到这一点?如果我需要手动执行此操作,有人可以提供一个示例,说明如何从请求中获取分组参数并将其应用于数据源,以便JSON正确吗?
谢谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
试试这个:
public virtual JsonResult GetGridDataSource([DataSourceRequest()] DataSourceRequest request)
//Get data : var dataSource = ...
int requestPage = request.Page;
request.Page = 1;
var result = dataSource.ToDataSourceResult(request);
result.Total = sortpag.ItemCount;
request.Page = requestPage;
return Json(result);
}
答案 2 :(得分:0)