利用AutoComplete來達到自動完成的效果
- 4841
- 3
這是一個很方便的機制,因為它能夠給使用者一個自行輸入的環境,又可以立刻的找出是否有類似值來減少使用者輸入的字數。
★注意事項:想玩這玩意當然你必須要有
▲頁面上放置一個TextBox和一個Button,並且拉出一個AutoCompleteExtender
<asp:TextBox ID="txtSearch" runat="server" Width="400px"></asp:TextBox> <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" MinimumPrefixLength="1" ServiceMethod="GetName" TargetControlID="txtSearch"> </ajaxToolkit:AutoCompleteExtender> <asp:Button ID="Button1" runat="server" Text="搜尋" />
▲我們調用了一個網頁方法,所以我們就在程式頁中實做它吧
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public static string[] GetName(string prefixText, int count)
{
List<string> suggestions = new List<string>();
SqlConnection conn = demotools.getSqlConnection();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "SELECT title, kind FROM skill WHERE (title LIKE '%'+@title + '%')";
comm.Parameters.AddWithValue("title", prefixText);
conn.Open();
SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
int matchCount = 1;
try
{
while (reader.Read() && (matchCount <= count))
{
suggestions.Add(reader[0].ToString());
matchCount++;
}
return suggestions.ToArray();
}
catch (Exception ex)
{
suggestions.Add(ex.Message);
return suggestions.ToArray();
}
finally
{
comm.Dispose();
reader.Dispose();
}
}
這樣子就可以有一個自動完成的文字方塊了
網友回應
- DT

- 發表於: 2009-09-07
- 向版大請教,若我想在 A欄位做AutoComplete,點了選項之後,除了把選項的值帶回 A欄位,我也想把 A欄位的代號 帶到 B欄位。不知是否可行? ex: 在 A欄位打 Taiw,然後 選了 Taiwan,除了把 Taiwan帶回 A欄位外,也想把 886 也帶回 B欄位。
-
如果自己寫的話不難辦到,不過用這套的話可能要偷機來玩,比如說先丟到SESSION來去接什麼的,但都排除不了要自己寫一段JS來更新你所謂的B欄位
回覆於: 2009-09-07
- KH

- 發表於: 2009-02-13
- 謝謝版大的回覆,會問這問題是我老闆想知道如果有現成的不知道可不可以用別人寫好的@@
再次感謝你的回覆
-
不太可能用別人的吧,畢竟你要撈的資料庫又不一樣,你的資料庫規格和它人也不會一樣
回覆於: 2009-02-13
- KH

- 發表於: 2009-02-12
- 請問版大:
如果Web Services.asmx檔不是在自己的網站上而是在別人的網站上
請問可以引用嗎?
例如AutoCompete屬性可以寫成Service Path = "xxx.xxx.xxx.xxx/WebService.asmx"嗎?? -
原理上是可以,可是要看對方有沒有檔,不過用別人的幹啥@@?
回覆於: 2009-02-12