首页 文章

在DynamicLinq查询中使用扩展方法

提问于
浏览
4

我想扩展Telerik RadGrid的过滤行为 . 例如,如果用户使用以下单词"michele"过滤网格,则还应返回包含"michèle"的行 . Telerik RadGrid中不支持开箱即用 . 因此我为String类型编写了一个扩展方法: public static bool IsSqlLikeMatch( this string input, string pattern ) { [...] }

作为第二步,我替换了RadGrid的FilterExpression,如下所示:

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

但不幸的是我收到以下错误消息:

没有适用的方法'IsSqlLikeMatch'存在于'String'类型中

Telerik RadGrid使用DynamicLinq . 所以我的问题是:“我可以在DynamicLinq中使用扩展方法吗?”我该如何做到这一点?

Edit 09/09/2011: 我联系了Telerik的支持,这是他们的回答:

遗憾的是,您无法扩展Telerik.Web.UI.dll中包含的动态linq函数 . 因此,对DynamicLinq类的更改不会影响RadControls内部使用的ExpressionParser . 但是,您可以尝试更改Dynamic Linq库并通过从RadGrid解析获取过滤器表达式并将它们传递给更改的Dynamic Linq类的方法并将RadGrid绑定到返回的数据来执行自定义过滤 . 我附上了一个小样本,演示了如何使用RadGrid的过滤器/排序表达式来过滤,排序和翻阅ObjectDataSource .

1 回答

  • 0

    要使用扩展方法,必须为您定义扩展方法的类的命名空间使用 using 指令 .

    因此,尝试将您的类放在命名空间中,并为其添加 using .

    另外,请确保将此类定义为public static .

相关问题