如何在asp.net mvc中的kendo ui网格中动态设置页面大小

时间:2014-07-01 11:19:35

标签: jquery asp.net-mvc kendo-ui kendo-grid

我在asp.net mvc应用程序中使用kendo ui grid。我有一个需要绑定控制器(ViewBag)中指定的某个整数的值的请求。我已经定义了如下网格:

<div id="clientsDb">
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.ContactName).Width(140);
        columns.Bound(c => c.ContactTitle).Width(190);
        columns.Bound(c => c.CompanyName);
        columns.Bound(c => c.Country).Width(110);
    })
    .HtmlAttributes(new { style = "height: 380px;" })
    .Scrollable()
    .Groupable()
    .Sortable()
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes(true)
        .PageSize((int)ViewBag.ItemsPerPage)
        .ButtonCount(5))
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Customers_Read", "Grid"))
    )
)
</div>

在我已定义的控制器中

public ActionResult GridDisplay()
{
   ViewBag.ItemsPerPage = 10;
   return View("gridpage");
}

如果我想尝试

@{
   var ItemsPerPage = ViewBag.ItemsPerPage;
}


var ItemsPerPage = '@(ItemsPerPage)'
$("#grid").data("kendoGrid").dataSource().query({ page: 1, pageSize: ItemsPerPage });

它正在工作但数据源调用两次会降低性能。 我想用动态大小直接加载网格。

1 个答案:

答案 0 :(得分:0)

尝试在网格数据源而不是网格本身上设置pagesize。 我有以下内容:

.DataSource(ds=> ds
  .Ajax()
  .PageSize(50)
  .ServerOperation(false)
  .Read(read => read.Action("xx", "xx", new { ID = @Model.ID })

您应该可以使用ViewBag值替换.PageSize(50)

  .PageSize((int)ViewBag.ItemsPerPage)