Подтвердить что ты не робот

Как реализовать страничный пейджинг на стороне сервера в клиентской части сетки пользовательского интерфейса Kendo в asp.net mvc

Может ли кто-нибудь сказать мне, как я могу реализовать серверный пейджинг с клиентской сетью пользовательских интерфейсов Kendo?

4b9b3361

Ответ 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>*")
        )