【问题标题】:Apply multiple filters to Kendo Grid programmatically以编程方式将多个过滤器应用于 Kendo Grid
【发布时间】:2022-12-28 13:05:01
【问题描述】:

我的项目有一个 Kendo Grid,它具有通常的表头过滤功能,但我也被要求为状态类型和年份(多选)提供自定义过滤器。所以我有一个下拉列表,其中包含一组年份可供选择,用户可以选择六年选项中的任何一个。所以这是过滤器的逻辑:

年份列:显示年份与年份选项之一匹配的所有行。此过滤器使用“或”逻辑。

状态列:显示状态等于所选选项之一的所有行。也是“或”逻辑。

过滤器必须使用“与”逻辑来组合两个过滤器。

function setStatusGridFilters() {
    var grid = $("#MyKendoGrid").data("kendoGrid");
    var dataSource = grid.dataSource;
    var filterCollection = { logic: "or", filters: [] };

    var displayStatuses = $("#StatusFilter").getKendoCheckBoxGroup().value();
    for (var i = 0; i < displayStatuses.length; i++) {
        filterCollection.filters.push({ field: "Status", operator: "eq", value: displayStatuses[i] });
    }

    dataSource.filter(filterCollection);
    dataSource.read();
}

function setYearGridFilters() {
    var grid = $("#myKendoGrid").data("kendoGrid");
    var dataSource = grid.dataSource;
    var filterCollection = { logic: "or", filters: [] };

    var years = $("#YearList").val();

    for (var i = 0; i < years.length; i++) {
        filterCollection.filters.push({ field: "Year", operator: "eq", value: years[i] });

    dataSource.filter(filterCollection);
    dataSource.read();
}

这根本行不通,我不确定如何实现。这些自定义过滤器中的任何一个都可以单独使用,但我还没有找到让它们协同工作的方法。每个过滤器应该与所选选项“或”,但在它们之间“和”。

【问题讨论】:

    标签: filter kendo-grid


    【解决方案1】:
    dataSource.filter({
    logic: "or",
    filters: [
      { field: "fieldA", operator: "eq", value: 100 },
      {
         logic: "and",
         filters: [
             { field: "fieldA", operator: "lt", value: 100 },
             { field: "fieldB", operator: "eq", value: true }
         ]
     }
    ]
    

    });

    我想这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2017-10-20
      相关资源
      最近更新 更多