获取 Kendo UI Grid 中使用的过滤器

Posted

技术标签:

【中文标题】获取 Kendo UI Grid 中使用的过滤器【英文标题】:Getting filters used in KendoUI Grid 【发布时间】:2013-10-27 13:13:19 【问题描述】:

在 KendoUI 中,我有一个带有过滤器的网格。我更感兴趣的是了解用户用于保存目的的所有过滤器,以便下次用户进入时,它们可以自动填充。如何使用所有过滤器?

【问题讨论】:

【参考方案1】:

不确定您的代码看起来如何,但您应该能够获取 Grid 的数据源对象并调用方法 filter() 以获取当前应用的数据源过滤器。看看下面来自here的例子:

<script>
var dataSource = new kendo.data.DataSource(
  data: [
     name: "Jane Doe" ,
     name: "John Doe" 
  ],
  filter:  field: "name", operator: "startswith", value: "Jane" 
);
var filter = dataSource.filter();
console.log(filter.logic);  // displays "and"
console.log(filter.filters[0]); // displays 'field: "name", operator: "startswith", value: "Jane"'
</script>

【讨论】:

谢谢。这正是我一直在寻找的。不知何故,我在他们的文档中错过了这一点。 出于某种原因,这对我来说总是未定义的。我正在使用 MVC Kendo,但通过 JS Api 访问。【参考方案2】:

只是添加到上面的答案中-如果您只想在前端进行,甚至不针对实际数据源-您可以使用以下...

var myGrid = $("#gridname").data("kendoGrid");
myGrid.dataSource.filter().filters[0];

您可以将其分解为不同的参数...

myGrid.dataSource.filter().filters[0].field
myGrid.dataSource.filter().filters[0].operator
myGrid.dataSource.filter().filters[0].value

希望这会有所帮助 - 干杯

【讨论】:

【参考方案3】:

我的配置是 MVC,在服务器端获取数据。我的意思是网格调用这个方法来获取它的数据:

public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, 
        int documentType = (int)ApiGlobals.TrxTypes.חשבונית)

我所做的很简单: 我在会话变量中捕获请求对象,然后在需要时使用会话变量。在以下示例中,我使用过滤器仅打印在网格中过滤的文档:

    public ActionResult Documents_Read([DataSourceRequest] DataSourceRequest request, 
        int documentType = (int)ApiGlobals.TrxTypes.חשבונית)
    
       Session["DocumentListFilter"] = request;
       ...
    

    public ActionResult PrintListKendo(int documentType)
               
        DataSourceRequest request  = (DataSourceRequest)Session["DocumentListFilter"];

        if (request == null)
        
            request = new DataSourceRequest();
        

        request.Page = 1;
        request.PageSize = int.MaxValue;

        IQueryable<Document> data = _db.GetDocuments()
           .Where(d => d.TrxTypeId == (int)documentType);

        DataSourceResult filteredData = data.ToDataSourceResult<Document, DocumentListSingleDocumentViewModel>(request,
            d => ViewModelFactory.Create(d));

        //... call the reporting package with the data, etc.
      

您可以将请求对象(=对其进行序列化,或将其保存属性)保存到数据库中,并在用户打开相关页面并且网格获取其数据时重新加载它,

【讨论】:

以上是关于获取 Kendo UI Grid 中使用的过滤器的主要内容,如果未能解决你的问题,请参考以下文章

DataSourceResult不在kendo-grid中进行分页,过滤和排序

为 Kendo UI Grid 设置默认过滤器

数据表高级过滤器菜单,如 Excel 或 Kendo UI Grid?

Kendo UI Grid 自定义过滤器菜单在第一次过滤或清除后中断

如何更改 kendo ui grid mvc 中的默认过滤器运算符

Telerik Kendo Grid 重新绑定问题