У меня есть сетка Kendo MVC, где разбиение на страницы не работает. Он загружает набор результатов на одной странице, и нажатие на кнопки страницы ничего не делает.Pagination не работает
Файлы сценариев загружены правильно и в правильном порядке (jquery-1.11.2.min.js
, kendo.all.min.js
и kendo.aspnetmvc.min.js
).
Я использую Kendo UI версии 2015 Q1 (2015.1.318.545).
Посмотреть
@(Html.Kendo().Grid<MyModel>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(c => c.Type);
columns.Bound(c => c.Count);
columns.Bound(c => c.Date);
})
.Filterable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(10)
.PageSizes(new[] { 20, 50, 100 }))
.DataSource(ds => ds
.Ajax()
.Read(r => r.Action("GetGridData", "Home", new { code = "code" }))
.PageSize(20)
)
)
Контроллер
public ActionResult GetGridData([DataSourceRequest]DataSourceRequest request, string code = "")
{
var result = MyService.GetGridData(code);
return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
Сервис
public IQueryable<MyModel> GetGridData(string code)
{
using (var dbContext = new MyEntities())
{
return dbContext.Products.Where(w => w.Code == code)
.Select(s => new MyModel {
Type = s.Type,
Count = s.Count,
Date = s.Date
});
}
}
При загрузке страницы, то DataSourceRequest выглядит следующим образом:
Без надлежащего размера страницы результат будет полный набор данных, как показано здесь:
Откуда вы получаете 'regionCode' ?? Я не нахожу в вашей переменной такую переменную. – Dhwani
У вас достаточно данных в базе данных? вы можете показать код метода 'MyService.GetGridData (code)'? – Dhwani
Я добавил службу, так как вы можете видеть, что это простой запрос к Entity Framework, возвращающий IQueryable. Я полагаюсь на метод 'ToDataSourceResult (запрос)' для выполнения запроса, поэтому он получит только то, что ему нужно из базы данных. Конечно, это работает только в том случае, если «DataSourceRequest» правильно передано в действие. – Nicholas