Используйте метод расширения в DynamicLinq-запросе - PullRequest
4 голосов
/ 11 июля 2011

Я хочу расширить поведение фильтра Telerik RadGrid.Если пользователь, например, фильтрует сетку со следующим словом «michele», он также должен возвращать строки, которые включают «michèle».Это не поддерживается из коробки в Telerik RadGrid.Поэтому я написал метод расширения для типа String: public static bool IsSqlLikeMatch( this string input, string pattern ) { [...] }

В качестве второго шага я заменил FilterExpression RadGrid следующим образом:

this.MasterTableView.FilterExpression.Replace( "Contains", "IsSqlLikeMatch" );

Но, к сожалению, я получаю следующую ошибкусообщение:

Нет применимого метода IsSqlLikeMatch в типе 'String'

Telerik RadGrid использует DynamicLinq.Поэтому мой вопрос: «Могу ли я использовать методы расширения в DynamicLinq»?И как мне это сделать?

Редактировать 09.09.2011: Я связался со службой поддержки Telerik, и это был их ответ:

К сожалению, выне удалось расширить динамические функции linq, включенные в Telerik.Web.UI.dll.Таким образом, ваши изменения в классе DynamicLinq не повлияют на ExpressionParser, используемый внутри RadControls.Однако вы можете попробовать изменить библиотеку Dynamic Linq и выполнить пользовательскую фильтрацию, получив выражение фильтра из анализа RadGrid и передав его в метод измененного класса Dynamic Linq и привязав RadGrid к возвращаемым данным.Я приложил небольшой пример, который демонстрирует, как использовать выражения фильтра / сортировки RadGrid для фильтрации, сортировки и просмотра страниц через ObjectDataSource.

1 Ответ

0 голосов
/ 17 июля 2011

Чтобы использовать метод расширения, у вас должна быть директива using для пространства имен класса, в котором вы определили метод расширения.

Поэтому попробуйте поместить свой класс в пространство имен и добавьтеusing для него.

Также убедитесь, что этот класс определен как общедоступный static.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...