代码之家  ›  专栏  ›  技术社区  ›  Quark Soup

用kendoui实现服务器端分页的正确方法是什么?

  •  1
  • Quark Soup  · 技术社区  · 8 年前

    类似的问题 Kendo ui Paging on grid . 我有3000件东西可以放回格子里。过滤可以把它降到零。我希望能够将3000个条目分页到网格中,并且只返回每个页面上出现的条目,比如50个条目(对于任何给定的过滤器)。

        <div class="col-md-10">
        <div class="clearfix" name="funddetail" id="funddetail" style="display: inline-block">
            @(Html.Kendo().Grid<InvestmentViewModel>()
                    .Name("grid")
                    .ToolBar(tools =>
                    {
                        tools.Create();
                    })
                    .HtmlAttributes(new { @class = "k-widget k-grid" })
                    .Selectable()
                    .Columns(columns =>
                    {
                        columns.Bound(c => c.EMSFundId).Hidden(true);
                        columns.Bound(c => c.FundId).Hidden(true);
                        columns.Bound(c => c.ManagerId).Hidden(true);
                        columns.Bound(c => c.Status).Hidden(true);
                        columns.Bound(c => c.ManagerId).Hidden(true);
                        columns.Bound(c => c.ManagerName).Sortable(true).Title("Entity").Filterable(false);
                        columns.Bound(c => c.FundName).Sortable(true);
                        columns.Bound(c => c.AssetClass).Sortable(true);
                        columns.Bound(c => c.Strategy).Sortable(true);
                        columns.Bound(c => c.SubStrategy).Sortable(true);
                        columns.Bound(c => c.OwnerFullName).Sortable(true);
                        columns.Bound(c => c.StatusDescription).Sortable(true).Filterable(f => f.Cell(c => c.Operator("startswith").SuggestionOperator(FilterType.StartsWith)));
    
                    })
                    .Resizable(r => r.Columns(true))
                    .Scrollable()
                    .Sortable(sortable => sortable
                        .AllowUnsort(false)
                        .SortMode(GridSortMode.SingleColumn))
                    .Pageable(pageable => pageable
                        .Refresh(true)
                        .PageSizes(new int[] { 50, 100, 500 })
                        .ButtonCount(10))
                    .DataSource(dataSource =>
                        dataSource
                        .WebApi()
                        .PageSize(50)
                        .Model(model =>
                        {
                            model.Id(p => p.FundId);
                        })
                        .Events(events => events.Error("error_handler"))
                        .Read(read => read.Action("GetInvestmentsAsync", "Views"))
                    )
            )
        </div>
    

    1 回复  |  直到 8 年前
        1
  •  2
  •   Sangram Nandkhile Viktor Klang    8 年前

    public ActionResult GetInvestmentsAsync([DataSourceRequest] DataSourceRequest request)
    {
      DataSourceRequest fakeRequest = new DataSourceRequest()
              {
                  Groups = request.Groups,
                  Filters = request.Filters,
                  Sorts = request.Sorts
              };
    
        var investments = // fetch your data here, use a viewmodel to hold data and Total records
        DataSourceResult result;
              try
              {
                  result = investments.ToDataSourceResult(fakeRequest);
              }
              catch
              {
                  result = dataTable.ToDataSourceResult(new DataSourceRequest());
              }
    
        result.Total = investments.TotalRecords; // Assign Total here
        return JsonResults(result);
    }
    
    推荐文章