KendoUI MVC Helper Grid Paging

时间:2014-02-18 19:49:22

标签: asp.net-mvc kendo-grid

我正在使用Asp.Net KendoUI Grid MVC帮助程序,但无法使分页正常工作。具体来说,我无法显示总记录。这是代码:

@(Html.Kendo().Grid(Model.FunctionList.AsEnumerable())
        .Name("Grid")
        .DataSource(dataSource => dataSource
            .Server()
            .Total(50)
            .Model(model => model.Id(f => f.FunctionId))
            .Read(read => read.Action("Index", "Function"))
            .Update(update => update.Action("Edit", "Function"))
            .Destroy(destroy => destroy.Action("Delete", "Function"))
            )

  .Columns(columns =>
  {
      columns.Bound(f => f.FunctionName);
      columns.Bound(f => f.FunctionDescription);
      columns.Command(command => { command.Custom("Edit").Action("Edit", "Function").SendDataKeys(true); command.Destroy(); }).Width(200);

  })
.Scrollable()
.Groupable()
.Sortable()

.Pageable(pageable => pageable
                    .PageSizes(true)
                    .ButtonCount(5))

.Filterable(filterable => filterable
                    .Extra(false)
                    .Operators(ops => ops
                        .ForString(str => str.Clear()
                        .Contains("Contains")
                        .StartsWith("Starts with")
                        .EndsWith("Ends with")
                        .IsEqualTo("Equal to")
                        .IsNotEqualTo("Not Equal To")
                    )))    
    )

注意.Total(50)。无论选择的页面大小(5,10或20),我只得到1页,即网格显示“n个项目中的1到n”,其中n是页面大小。对于页面大小为5和总记录为50,它应该显示“50个项目中的1-5个”。

生成的javascript(查看源代码)显示Total(50)无效:

"pageSize":5,"page":1,"total":5,"serverPaging":true

注意“总数”:5应该是“总数”:50

3 个答案:

答案 0 :(得分:1)

我发布的整个网格在我的应用程序上工作正常。但我看了你的代码,你的数据源属性有问题,你缺少 .Ajax() .ServerOperation(false)< / em> (在添加这两个之后我做了分页工作),将它与我的比较,你会发现真正的原因

    Html.Kendo().Grid(Model.asdry).Name("abc").Columns(c =>
     {
c.Bound(p => p.datetimecalculated).Format("{0:dd-MM-yyyy}");
         c.Bound("").ClientTemplate("#= purchaseCriteria(data) #").Title("Sold/Bought");
         c.Bound(p => p.numcontracts);
         c.Bound(p => p.entityid);
         c.Bound(p => p.leagueid);
         c.Bound("")
             .ClientTemplate("#= setSeasonYear(data) #")
             .Sortable(false)
             .Title("Year");

         c.Bound("")
             .ClientTemplate("#= setSeason(data) #")
             .Sortable(false)
             .Title("Season");
         c.Bound(p => p.contractmeasurable);
         c.Bound(p => p.price).ClientTemplate("#= moneyformat_at(price) #");
         c.Bound(p => p.profitorloss).ClientTemplate("#= moneyFormat(profitorloss) #");

     }).DataSource(
    d => d
        .Ajax()
        .ServerOperation(false)

    )
    .Pageable()
    .Sortable()
    .Resizable(resizing => resizing.Columns(true))
            )

<强>更新 使用这些的原因如下 .Ajax()//指定使用ajax绑定 .ServerOperation(false)//分页,排序,过滤和分组将在客户端完成

答案 1 :(得分:0)

http://docs.telerik.com/kendo-ui/tutorials/ASP.NET/Hello%20Kendo%20UI/asp-net-hello-kendo-ui-part-1

这是一个很好的分页教程!

你需要跳过并拍摄。

如果您的页面尺寸为10且页码为2,则您希望基本上执行此总和

跳过。((第1页)* pageSize)。取(pageSize)

soo如果将记录10-20 并显示其中10个!

这可能没有意义,但链接很好! :)

答案 2 :(得分:0)

将kendogrid的serverPaging设置为false:

serverPaging: false,