使用Kendo UI进行嵌套过滤

时间:2019-06-27 15:47:49

标签: javascript asp.net-core kendo-ui kendo-grid

因此,我有两个包含一堆数据的网格,并且网格的每一行都有一个复选框供您进行选择。基本上,发生的是,当您在第一个网格上进行选择时,它会过滤第二个网格仅显示与网格1上的选择有关的内容。这是功能齐全的。但是,所有这些网格在顶部都有一个搜索栏,您可以在网格中搜索包含您键入的术语的项目。这还会根据用户输入来过滤网格。

我想通过相互嵌套过滤器使它们相互配合工作。我希望根据选择内容对网格进行过滤,然后希望用户能够在搜索栏中键入一些内容,然后再次过滤已过滤的网格以匹配项目。

我在Telerik论坛上找到了一条帖子,告诉某人尝试这样的操作,但这不起作用:

dataSource.filter({
    logic: 'or',
    filters: [
        { field: "Id", operator: "eq", value: 33 },
        {
            logic: "and",
            filters: [{ field: "Everything", operator: "contains", value: "s" }]
        },
        { field: "Id", operator: "eq", value: 34 },
        {
            logic: "and",
            filters: [{ field: "Everything", operator: "contains", value: "s" }]
        }
    ]
});

我打算为此做的是为具有(Id = 33 && Everything.contains("s")) || (Id = 34 && Everything.contains("s")的项目过滤网格。我该如何解决才能使其正常工作?

1 个答案:

答案 0 :(得分:2)

我相信您需要的过滤器结构是:

dataSource.filter({
    logic: 'or',
    filters: [
        {
            logic: "and",
            filters: [
                { field: "Everything", operator: "contains", value: "s" },
                { field: "Id", operator: "eq", value: 33 }
            ]
        },
        {
            logic: "and",
            filters: [
                { field: "Everything", operator: "contains", value: "s" },
                { field: "Id", operator: "eq", value: 34 }
            ]
        }
    ]
});

尝试将该结构手动应用于网格,如果可以的话,您可以实现它。