Итак, у меня есть две сетки, которые содержат кучу данных, и в каждой строке сетки есть флажок, в котором вы можете сделать выбор. По сути, когда вы делаете выбор в первой сетке, она фильтрует вторую сетку для показать только то, что относится к выбору в сетке 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"). Как я могу исправить это, чтобы заставить его работать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я считаю, что структура фильтра вам нужна:
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 }
]
}
]
});
Попробуйте применить эту структуру вручную к вашей сетке, если она работает, вы можете реализовать ее.
Это было решением. Спасибо!