不知道大家是不是有注意到googel等搜尋引擎時候,輸入字母或者漢字的開頭,就會有後續的提示資訊呢。當然了,google所使用的技術,我不敢貿然的猜測,但是我們今天可以藉助Ajax所提供給大家個控制項,進行模仿。google的搜尋技術確實驚人,可以在提示的資訊中,在它的伺服器中,快速的搜尋出來短時間的找到需要的資訊。
看效果。
輸入wo之後,後續的3個隨即產生的提示。可以簡單模仿下效果。在這個例子中,建立一個Webservice進行示範。
<div>
<asp:ScriptManager ID="sm" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="updatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="tb" runat="server" Text=""></asp:TextBox>
<ajax:AutoCompleteExtender ID="googleSa" runat="server" ServicePath="AutoComplete.asmx"
TargetControlID="tb" ServiceMethod="GetCompletionList">
</ajax:AutoCompleteExtender>
</ContentTemplate>
</asp:UpdatePanel>
</div>
AutoCompleteExtender控制項的屬性:
1.TargetControlID:指定將被輔助完成自動輸入的控制項ID,這裡的控制項只能是TextBox;
2.ServicePath:指出提供服務的WEB服務路徑,若不指出則ServiceMethod表示本頁面對應的方法名;
3.ServiceMethod:指出提供服務的方法名;
4.MinimumPrefixLength:指出開始提供提示服務時,TextBox控制項應有的最小字元數,預設為3;
5.CompletionSetCount:顯示的條數,預設為10;
6.EnableCaching:是否在用戶端快取資料,預設為true;
7.CompletionInterval:從伺服器讀取資料的時間間隔,預設為1000,單位:毫秒。
使用的幾點注意事項。
1.屬性聲明:
[System.Web.Script.Services.ScriptService]
2.方法的三個條件:需要嚴格遵守!
傳回型別必需為:string [];
參數類型必需為:string , int;
參數名:prefixText , count。
Code
[System.Web.Script.Services.ScriptService()]
public class AutoComplete : System.Web.Services.WebService
{
[WebMethod]
public string[] GetCompletionList(string prefixText,int count)
{
if (count == 0)
{
count = 10;
}
if (prefixText.Equals("xyx"))
{
return new string[0];
}
List<string> items=new List<string>(count);
Random random1=new Random();
for(int i=0;i<count;i++)
{
char c1 = (char)random1.Next(65, 97);
char c2 = (char)random1.Next(97, 122);
char c3 = (char)random1.Next(97, 122);
items.Add(prefixText + c1 + c2 + c3);
}
return items.ToArray();
}
}
- 參考文章:http://blog.chinaunix.net/u1/44087/showart_367198.html
- 參考文章:http://www.cnblogs.com/jailu/archive/2007/01/27/632201.aspx