Telerik RadGridのフィルタ動作を拡張したいと考えています。 たとえば、ユーザーが次の単語 "michele"でグリッドをフィルタリングする場合、 "michèle"を含む行も返す必要があります。これは、Telerik RadGridのすぐにサポートされていません。私はこのようなRadGridのFilterExpressionを置き換える第二段階としてpublic static bool IsSqlLikeMatch(this string input, string pattern) { [...] }
DynamicLinq-queryで拡張メソッドを使用する
: は、したがって、私は、String型の拡張メソッドを書いた
this.MasterTableView.FilterExpression.Replace("Contains", "IsSqlLikeMatch");
しかし残念ながら、私は次のようなエラーメッセージが出ます:
を該当メソッドが 'IsSqlLikeMatch' 型に存在する '文字列'
Telerik RadGridはDynamicLinqを使用しています。だから私の質問: "私はDynamicLinqで拡張メソッドを使用することはできますか?"そして私はこれをどのように達成するのですか?
編集2011年9月9日: 私は、Telerikサポートに連絡してきたし、これは彼らの答えだった。
残念ながらあなたはTelerik.Web.UIに含まれる動的なLINQ機能を拡張することができませんでした。 dll。したがって、DynamicLinqクラスへの変更は、内部的にRadControlsに使用されるExpressionParserには影響しません。しかし、動的Linqライブラリを変更し、RadGrid解析からフィルタ式を取得してカスタムフィルタリングを実行し、変更された動的Linqクラスのメソッドに渡し、返されたデータにRadGridをバインドすることができます。 RadGridのフィルタ/ソート式を使用して、ObjectDataSourceをフィルタ、並べ替え、ページする方法を示す小さなサンプルを添付しました。
「IsSqlLikeMatch」はどの名前空間ですか? – Justin
すべての拡張メソッドを保持するクラスを作成しましたが、このクラスの名前空間は指定しませんでした。 – thomasvdb
あなたは 'System.Linq'名前空間に入れてみるといいかもしれません - 私はこれを長期的な解決策としてアドバイスしているかどうかはわかりませんが、その方法が見つかったかどうかは興味深いでしょう。 – Justin