Может ли кто-нибудь сказать мне, как я могу реализовать серверный пейджинг с клиентской сетью пользовательских интерфейсов Kendo?
Как реализовать страничный пейджинг на стороне сервера в клиентской части сетки пользовательского интерфейса Kendo в asp.net mvc
Ответ 1
UPDATE: выпустила библиотеку .NET с открытым исходным кодом, которая делает пейджинг, сортируя фильтрацию намного проще.
Сетка будет отправлять текущие pageSize
и skip
после установки serverPaging
на true
. На стороне сервера вы должны разместить свои данные с помощью предоставленной информации и вернуть ее вместе с общим количеством элементов. Вот фрагмент кода:
Действие
public ActionResult Products(int pageSize, int skip)
{
using (var northwind = new NorthwindDataContext())
{
var products = northwind.Products;
// Get the total number of records - needed for paging
var total = products.Count();
// Page the data
var data = products.Skip(skip).Take(pageSize).ToList();
// Return as JSON - the Kendo Grid will use the response
return Json(new { total = total, data = data });
}
}
Вид
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "home/products",
dataType: "json",
type: "POST"
}
},
schema: {
data: "data", // records are returned in the "data" field of the response
total: "total" // total number of records is in the "total" field of the response
},
serverPaging: true // enable server paging
}
});
Ссылка
Пейджинг с LINQ
Настройки конфигурации DataSource
Ответ 2
Чтобы реализовать разбиение на страницы, правильный формат должен быть возвращен с сервера. Для серверного пейджинга формат JSON будет чем-то вроде JSON: -
{ "mytotal":1069, "mydata": [{ ProductID : 1, ProductName : "Chai"}, { ProductID : 2, ProductName : "Chang" }]}
Сообщать в сетку кендо общее количество записей из mytotal объекта и строк данных из mydata в схеме
schema: {
data: "mydata"
total: "mytotal" // total is returned in the "total" field of the response
}
Посмотрите подробный пример здесь
Ответ 3
Принятый ответ не имеет решения пользовательского интерфейса; предоставляет только ответ JQuery. В случае, если это поможет кому-то еще, вот решение, которое работало для нашей сетки кендо в пользовательском интерфейсе:
фрагмент кода контроллера
DataSourceResult result = new DataSourceResult()
{
Data = dataSet,
Total = recordCount
};
return Json(result, JsonRequestBehavior.AllowGet);
фрагмент кода View
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("*<our method>*", "*<our controller>*")
)