Kendo ui grid полная подкачка на стороне сервера и настройка общего количества

Я использую Kendo grid с серверной подкачкой. Я делаю сортировку и выборку данных на самой стороне базы данных, которая дает мне только количество записей pagesize. I also get count of total records from backend itself. Я просто хочу привязать эти данные к сетке кендо с отображением номера страницы в соответствии с count I return.

т. е. для каждого следующего запроса страницы я просто возвращаю pagesize(например, 15) количество записей с общим количеством записей. Ниже приведен мой код для Kendo grid. Пожалуйста, помогите мне связать эти записи и показать номера страниц в соответствии с общим количеством.

@(Html.Kendo().Grid(Model.InvoiceList)
.Name("InvoiceGrid")
.Columns(columns =>
{
columns.Bound(p => p.CompanyName).Title("Company Name").Width(80);
columns.Bound(p => p.Account).Title("Account").Width(60);
columns.Bound(p => p.MerchantNumber).Title("Merchant No.").Width(60);
columns.Bound(p => p.InvoiceAmount).Title("Invoice Amount").Width(60);
columns.Bound(p => p.ReferralPercentage).Title("Referral %").Width(60);
columns.Bound(p => p.ReferralCommission).Title("Referral Com.").Width(60);
columns.Bound(p => p.DeveloperPercentage).Title("Developer %").Width(60);
columns.Bound(p => p.DeveloperCommission).Title("Developer Com.").Width(60);
})
.Pageable(
 )
.Sortable()
.Filterable(filterable => filterable
    .Extra(false)
    )
.DataSource(dataSource => dataSource
 .Ajax()
    .Batch(false)
    .PageSize(15)
      .ServerOperation(true)
      .Read(read => read.Action("Index", "Invoice")
      ).Total(Model.count)
 )
 )

Мой серверный код, который я использую для извлечения записей, выглядит следующим образом.

public async Task<ActionResult> IndexAsync(int pageNo=0,int numberOfRecord=15)
    {

        //InvoicePaging has invoice list of 15 records and count = 400
        InvoicePaging ip = await InvoiceDAL<FileRecord>.getAllInvoices("SProcGetInvoiceList", pageNo, numberOfRecord);
        return View("InvoiceList",ip);
    }

Класс подкачки накладных —

public class InvoicePaging
{
    [JsonProperty(PropertyName = "InvoiceList")]
    public List<Invoice> InvoiceList { get; set; }

    [JsonProperty(PropertyName = "count")]
    public int count { get; set; }
}

1 ответ

  1. После поиска решения проблемы я получил следующий код, работающий на меня.

    @(Html.Kendo().Grid<Commission.Vault.Models.Invoice>()
    .Name("InvoiceGrid")
    .Columns(columns =>
    {
    columns.Bound(p => p.CompanyName).Title("Company Name").Width(80);
    columns.Bound(p => p.Account).Title("Account").Width(60);
    columns.Bound(p => p.MerchantNumber).Title("Merchant No.").Width(60);
    columns.Bound(p => p.InvoiceAmount).Title("Invoice Amount").Width(60);
    columns.Bound(p => p.ReferralPercentage).Title("Referral %").Width(60);
    columns.Bound(p => p.ReferralCommission).Title("Referral Com.").Width(60);
    columns.Bound(p => p.DeveloperPercentage).Title("Developer %").Width(60);
    columns.Bound(p => p.DeveloperCommission).Title("Developer Com.").Width(60);
    })
    
    .EnableCustomBinding(true)
    .BindTo(Model.InvoiceList)
    .Pageable(
     )
    .Sortable()
    .Filterable(filterable => filterable
        .Extra(false)
        )
    .DataSource(dataSource => dataSource.Server().Total(Model.count).PageSize(15)
     )
     )
    

    И код за ней в Asp.net is

    public async Task<ActionResult> IndexAsync([DataSourceRequest(Prefix = "InvoiceGrid")] DataSourceRequest request)
        {
            List<Invoice> il = new List<Invoice>();
            int pageNo = request.Page-1,numberOfRecord=15;
            InvoicePaging ip = await InvoiceDAL<FileRecord>.getAllInvoices("SProcGetInvoiceList", pageNo, numberOfRecord);
            return View("InvoiceList",ip);
        }
    

    Единственное, что я всегда получаю pageSize как 0. Другие все работает отлично.