我想擴展Telerik RadGrid的過濾器行爲。 如果用戶例如用下面的單詞「michele」過濾網格,它也應該返回包含「michèle」的行。 Telerik RadGrid不支持這種開箱即用的功能。 因此,我寫的String類型一個擴展方法:public static bool IsSqlLikeMatch(this string input, string pattern) { [...] }
在DynamicLinq查詢中使用擴展方法
作爲第二步驟我取代radgrid控件的這樣的FilterExpression:
this.MasterTableView.FilterExpression.Replace("Contains", "IsSqlLikeMatch");
但不幸的是我得到以下錯誤消息:
沒有適用的方法 'IsSqlLikeMatch' 存在於類型 '字符串'
Telerik RadGrid使用DynamicLinq。所以我的問題是:「我可以在DynamicLinq中使用擴展方法嗎?」?我該如何做到這一點?
編輯09/09/2011: 我已經聯繫了Telerik的支持,這是他們的答案:
不幸的是,你不能延長納入Telerik.Web.UI動態LINQ功能。 DLL。因此,對DynamicLinq類的更改不會影響RadControl內部使用的ExpressionParser。但是,您可以嘗試更改Dynamic Linq庫並通過從RadGrid分析中獲取過濾器表達式並將它們傳遞給已更改的Dynamic Linq類的方法並將RadGrid綁定到返回的數據來執行自定義過濾。我附加了一個小示例,演示瞭如何使用RadGrid的過濾器/排序表達式對ObjectDataSource進行過濾,排序和分頁。
什麼命名空間是'IsSqlLikeMatch'方法? – Justin
它寫了一個類,它包含我所有的擴展方法,但我沒有爲這個類指定一個名稱空間。 – thomasvdb
您可能想嘗試將它放入'System.Linq'命名空間 - 我不確定我是否建議將此作爲一個長期解決方案,但是如果發現該方法會很有趣。 – Justin