2010-03-28 75 views
3

如果向編輯控件提供字符串列表並設置自動填充模式和源,則會自動獲取自動完成功能。我的問題是我可以在沒有控制權的情況下在.NET中獲得相同的功能。換句話說,我想是這樣的:如何在沒有控件的情況下獲得自動完成功能

string[] ProgressivePartialMatch(string[] Strings, string MatchText) 

,所以我想在後面的字符串會在自動完成已經出現了,可以這麼說。

回答

0

您可以使用ajax從數據庫中獲取匹配的項目(jQuery將滿足您的需求)。和簡單的JavaScript(最好是jQuery)進行編輯控制。 問題是爲什麼你需要這個?

P.S.看看這個

jQuery Autocomplete and ASP.NET

+0

我不認爲這是他想要的。他寧願要一個返回符合模式的項目的函數。 – 2010-03-28 00:14:56

+0

@Lukasz正確我正在尋找基本上在數組上運行StartsWith,雖然我當然可以遍歷數組,我想知道如果框架公開底層的自動完成算法,編輯控件使用,以某種方式 – Rahul 2010-03-28 00:54:35

0

如果它不存在,它很容易寫自己

string[] ProgressivePartialMatch(string[] Strings, string MatchText) 
{ 
    return Strings.Where(s => s.StartsWith(MatchText)).ToArray(); 
} 
+0

這將工作,但對於大數據集來說它會非常慢,因爲它必須經過所有的項目。 – 2010-03-28 00:24:28

+0

它不會太糟糕,排序字符串數組,而不是二進制搜索。它不需要通過所有的項目。 – Casey 2010-03-28 00:28:05

+0

是的,它可能在很大的列表上很慢,但是對於每個鍵入的字符它會變得越來越小。如果輸入是一個排序數組,我可以進行二分搜索,但這不是規範的一部分。 – Gabe 2010-03-28 00:35:09

1

如果你想快速自動完成,你會想實現一個trie。您可以按照特定字符串查找以特定字符串開頭的所有項目,直到「開始於」字符串結束。

+0

如果他想要查找包含MatchText的所有字符串,而不是僅僅以它爲前綴? – Gabe 2010-03-28 00:38:56

+0

@gabe:沒錯,如果是這種情況,這個解決方案將不起作用。我猜這個問題的答案取決於提問者定義爲自動完成的內容。 – 2010-03-28 00:46:21

+0

我認爲剛開始是好的,編輯控件自動完成似乎是如何工作的,而不是包含 – Rahul 2010-03-28 00:52:30

相關問題