Я хочу расширить поведение фильтра 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.