【问题标题】:Server side filtering with server pagination enabled in Kendo Grid在 Kendo Grid 中启用服务器分页的服务器端过滤
【发布时间】:2016-01-04 12:14:00
【问题描述】:

我有一个启用服务器端分页的剑道网格以避免性能问题。 我已经做了 .SeverOperation(True) 这意味着当我点击网格中的分页按钮时,数据将被部分加载。

在我的情况下,PageSize(20),每次我点击下一个分页按钮时,都会加载下一组 20 条记录。

现在,我想实现服务器过滤。第一次,这是通过点击服务器加载的。 因此,如果我过滤一个值“Number = 123”,并且我的结果有 40 条记录,那么我的网格将有 2 页。 但是如果我点击第二页,这会再次命中服务器,DataSource.Request.Filter 将为空。

任何想法,如何保留 FilterColumns 或在启用服务器端过滤时如何启用客户端过滤?

谢谢,

【问题讨论】:

  • ServerOperation(true) 将在您每次更改页面时调用服务器。如果您只想在客户端进行过滤,则必须将此设置为 false。您应该将过滤器发送到服务器,获取过滤后的记录,并且在客户端上您已经过滤了您的记录集,并且可以无缝更改页面
  • @chiapa :是的,我知道 ServerOperation(false) 将用于客户端。但是我需要在服务器端进行过滤,并且每次我想将过滤器传递到服务器端。正如您所说的“您应该将过滤器发送到服务器,获取过滤后的记录”,请让我知道每次单击分页按钮时如何发送过滤器。现在,当我单击分页按钮时,我丢失了该过滤器。希望我对你很清楚。
  • 目前对您的问题的唯一回答是:“您做错了什么,您应该在过滤值然后更改页面时获取过滤器对象”。我刚刚检查了telerik mvc“Grid/Filter Row”演示。我过滤了列,更改了页面,但我仍然在请求对象中获得过滤器对象。如果您需要帮助,您需要向我们提供更多信息或/和代码示例。 PS。您不能开箱即用地设置服务器分页和客户端过滤器。
  • 嗨,我想我得到了路线的原因。这是因为我们定制的框架。为了获得过滤器,我编写了以下代码读取方法。 .DataSource(dataSource => dataSource.Ajax() .Read(read => read.Action("LoadGridData", ControllerName).Data("get")).ServerOperation(true) function get(){ var grid = $( "#Grid").data("kendoGrid"), parameterMap = grid.dataSource.transport.parameterMap; var data = parameterMap({ filter: grid.dataSource.filter() }); return { grid: data } } 在控制器中我不确定哪个类型是“网格”参数?

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


【解决方案1】:

我也面临同样的问题和一个解决方案,只需像这样在 parameterMap 中添加您的过滤器参数,

parameterMap: function (options) {
                        options.DivisionId = $("#division").val();
                        return JSON.stringify(options);
                    }

这给了我服务器端的过滤器值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2023-03-12
    相关资源
    最近更新 更多