Фильтрация источника данных Kendo UI с использованием лямбда-операторов OData v4
Я хотел бы отфильтровать Kendo DataSource с помощью лямбда-операторов OData v4 any
а также all
,
Я не смог найти никакой информации о том, как этого добиться, используя dataSource.filter
имущество. Я могу отфильтровать источник данных, вставив фильтр в URL-адрес следующим образом:
dataSource.transport.read.data.$filter = "Clients/any(c:c/Id eq 1)"
Но это не практично в моем случае. То, что я ищу, это способ объявить фильтр, подобный этому:
filter: { field: 'Clients/Id', operator: 'any', value: 1 }
Поддерживает ли Kendo UI лямбда-операторы OData в текущей версии?
2 ответа
В настоящее время такой поддержки нет. Это из документации:
filter.operator String
Оператор фильтра (сравнение). Поддерживаемые операторы: "eq" (равно), "neq" (не равно), "lt" (меньше), "lte" (меньше или равно), "gt" (больше чем), "gte" (больше или равно)," начинается с "," заканчивается с "," содержит ". Последние три поддерживаются только для строковых полей.
Я также попробовал сам, и он не работает, вы можете запустить пример и наблюдать за сетевыми запросами. Вы заметите, что запросы к серверу не включают настраиваемые операторы, если вы переключитесь на фильтрацию клиентов, вы получите ошибку. Так что это не сработает, по крайней мере, сейчас.
Кстати, зачем вам такая фильтрация? Если вам действительно нужна такая фильтрация, вы можете расширить сетку и переопределить фильтр, включая ваши пользовательские операторы, я видел примеры здесь, но сам этого не делал. Я расширяю другие виджеты, хотя.
Это можно сделать так:
filter: { field: 'Clients/any(c:c.Id eq 1)', operator: 'eq', value: true }