Вложенная фильтрация с помощью Kendo UI - PullRequest
2 голосов
/ 27 июня 2019

Итак, у меня есть две сетки, которые содержат кучу данных, и в каждой строке сетки есть флажок, чтобы вы могли делать выборки. В основном, когда вы делаете выбор в первой сетке, она фильтруетвторая сетка, чтобы показать только то, что относится к выборкам в сетке 1. Это полностью функционально.Но тогда у всех этих сеток также есть панель поиска вверху, чтобы вы могли искать в сетках элементы, которые содержат введенный вами термин. Это также фильтрует сетку на основе пользовательского ввода.

Iхочу, чтобы они работали вместе, вкладывая фильтры друг в друга.Я хочу, чтобы сетка была отфильтрована на основе выбранных элементов, а затем я хочу, чтобы у пользователя была возможность напечатать что-либо в строке поиска и снова отфильтровать уже отфильтрованную сетку для соответствующих элементов.

Я нашел сообщениена форумах 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 Ответ

2 голосов
/ 27 июня 2019

Я считаю, что вам нужна структура фильтра:

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 }
            ]
        }
    ]
});

Попробуйте применить эту структуру вручную к вашей сетке, если она работает, вы можете реализовать ее.

...