Во-первых, решите, собираетесь ли вы получать все данные на стороне сервера данных и представлять их в сетке, или вы собираетесь использовать AJAX с подкачкой страниц и т. Д., Что лучше для длинных списков. Вы пытаетесь сделать оба.
Для начала вам нужно избавиться от Read и установить ServerOperation (false):
// Your model is the list of data
@(Html.Kendo().Grid(Model)
...
// Tell kendo you are providing the data
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.PageSize(20)
// No Read since you provide all the data up front
)
Для второго варианта:
// Tell kendo the type you are going to fetch in the Read
@(Html.Kendo().Grid<EmployeeDetails>()
...
// Tell kendo you want data retrieved via AJAX
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("getusers", "Home"))
.PageSize(20)
)
Теперь создайте действие чтения для возврата JSON и воспользуйтесь преимуществом DataSourceRequest Kendo, который обрабатывает разбиение на страницы, фильтрацию, сортировку и т. Д.
public JsonResult getusers([DataSourceRequest] DataSourceRequest request)
{
// The AJAX generally works with IQueryables so that it can select a
// page full or records at a time. Entity Framework makes this easy.
// You would need to amend for ADO.NET with stored proc.
var employees = _db.Employees;
DataSourceResult response = employees.ToDataSourceResult(request);
return Json(response, JsonRequestBehavior.AllowGet);
}