2011-09-14 50 views
1

我有一個自動完成框在我的數據庫中進行搜索。 sql命令刪除特殊字符,但是文本框不顯示結果,因爲返回的結果包含特殊字符。Silverlight自動完成文本框忽略特殊字符

例如,如果我輸入1234 sql服務器將返回1234和123-4,但自動完成框將只顯示1234.有沒有一種方法,我可以讓兩個顯示?

回答

1

您可以在Autocomplex框上設置ItemFilter屬性,以使用您自己的自定義過濾器,該過濾器將包含特殊字符。例如:

//custom logic: how to autocomplete 
this.ItemFilter = (prefix, item) => 
{ 
    return item.ToString().Replace("-","").Contains(prefix); 
}; 

很明顯,您需要添加更多內容,但應該讓您開始。

編輯:在對註釋做出響應之後,如果你的SQL服務器已經在做你想要的過濾,那麼只需將AutoCompleteFilterMode設置爲None即可。這應該夠了吧。 :)

+0

內存/ CPU的時間不會花費更少的成本去存儲整個東西與破折號的副本嗎? –

+0

我不認爲代碼會花費大量的內存/ CPU。 :)你必須有成千上萬的項目,在這一點上這個代碼是你的問題中最少的。 – Bryant

+0

但不是這個ToString.Replace.Contains()在每個新的角色添加的每個項目上執行?不完全是最有效的。這是一個移動設備 - 如果你可以改爲使用Contains()... –