Kendo ui 剑道UI-网格分页(服务器端)

Kendo ui 剑道UI-网格分页(服务器端),kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我正在尝试使用带分页的剑道UI网格。除了Total属性外,一切似乎都正常,尽管我将其设置为100,但它显示了我正在设置的页面大小的10个项目中的1-10个。有谁比这更成功吗?我搜索剑道文档和论坛都没有成功 @(Html.Kendo().Grid(Model) .Name("Grid") .Columns(columns => { foreach (System.Data.DataColumn column in Model.Columns) { column

我正在尝试使用带分页的剑道UI网格。除了Total属性外,一切似乎都正常,尽管我将其设置为100,但它显示了我正在设置的页面大小的10个项目中的1-10个。有谁比这更成功吗?我搜索剑道文档和论坛都没有成功

@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
    foreach (System.Data.DataColumn column in Model.Columns)
    {
        columns.Bound(column.ColumnName);
    }
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Groupable()
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(10)
    .Total(100)
    .Model(model =>
        {
            foreach (System.Data.DataColumn column in Model.Columns)
            {
                model.Field(column.ColumnName, column.DataType);
            }                
        })
    .Read(read => read.Action("Read", "Controls"))
)
)


谢谢

根据最初的示例,“总计”将自动识别,如果您希望每页显示100个结果,请将其设置在“页面大小”中相反。

如果启用了服务器分页,则需要在架构中指定总计,并且每次从服务器返回响应时,也需要在架构指定的位置返回该总计

 dataSource: {
    serverPaging: true,
    schema: {
        data: "data",
        total: "total"
    },
  //...
讨论了同样的问题


检查以下内容:

< P>如果使用ASP.NET公司MVC的剑道包装,请考虑添加:

.EnableCustomBinding(true)
如本文所述,自定义绑定允许绕过内置的分页/排序功能。
这样,将考虑总计。

对,您需要在响应中传递总计字段

您的视图可以是:

@(Html.Kendo().Grid<YourViewModel>()
      .Name("grid")
      .DataSource(dataSource => dataSource          
          .Ajax()
          .PageSize(20)
          .ServerOperation(true)
          .Read(read => read.Action("Data_Read", "YourController", new {Id=Model.CurrentId}))
       )
      .Columns(c =>
      {
          c.Bound(x => x.Name);
          c.Bound(x => x.CreatedTime);
      })
      .Pageable()
      .Sortable()
)
在Fiddler中查看请求和响应,您将看到魔术是如何发生的: 请求:sort=SessionId asc&page=7&pageSize=20&group=&filter=

即网格传递给控制器的数据源请求格式;它已经包含分页所需的参数


查看操作的响应,您将看到一个包含所有记录的数据字段。Total字段是剑道网格分页所需的所有记录的总金额。

如果删除“.Total”属性,会发生什么?如果您使用ASP.Net MVC包装解决了问题,请发布解决方案好吗?我想每页显示10个项目,假设我有100个项目,从原始示例中,没有“总数“声明,尝试删除它,您将得到:100件物品中的1-10件。如果我将返回所有100件物品,这将起作用,我不想这样做。我希望服务器端分页而不是客户端。谢谢,正如您从我的代码中看到的,我使用的是Kendo包装器,因为我的模型是DataTable。我宁愿继续使用它。我找不到一个使用MVC包装器的示例。您的控制器操作是什么样子的-read.action(“read”,“Controls”)?这并不完全是我想要的,但我对代码做了一些更改,并让它使用这种方法,Thanks@PeturSubev我也遇到了同样的问题,比如分页和排序。。。在这里,我们使用SP从DB获取结果,我们已经在SP内部实现了分页和排序现在我需要使用kendo UI grid MVC包装器将页码、页面大小和排序列名传递给SP,我如何才能将页面大小和页码发送给SP…谢谢Andrei,我会检查它的
    public ActionResult Data_Read([DataSourceRequest]DataSourceRequest request, int Id)
        {
            int total = yourQuery.GetTotal(Id); 

            var returnViewModel = yourQuery.GetViewModels(Id, request.Page, request.PageSize);


            return Json(new
            {
                Data = returnViewModel,
                Total=total
            });
        }