jQuery と ASP.NET を使用したオートコンプリートの簡単な例を、このサイトと Web で検索しました。オートコンプリートで使用されるデータを Web サービスで公開したかった (おそらく次に行う予定です)。それまでの間、私はこれを機能させましたが、少しハッキーなようです...
私のページにはテキストボックスがあります:
<input id="txtSearch" type="text" />
私はjQueryオートコンプリートを使用しており、例に従って設定しています:
<link rel="stylesheet" href="js/jquery.autocomplete.css" type="text/css" />
<script type="text/javascript" src="js/jquery.bgiframe.js"></script>
<script type="text/javascript" src="js/jquery.dimensions.pack.js"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
ハッキングが始まるのはここからです...私はWebサービスの代わりにページを呼び出します:
<script type="text/javascript">
$(document).ready(function(){
$("#txtSearch").autocomplete('autocompletetagdata.aspx');
});
</script>
このページでは、すべての html を取り除き、これだけを作成しました (そうしないと、さまざまな HTML ビットがオートコンプリート ドロップダウンに表示されます)。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="autocompletetagdata.aspx.cs" Inherits="autocompletetagdata" %>
また、私の autocompletetagdata.aspx では、SubSonic を使用してデータベースからデータをクエリ、フォーマット、および返しています (1 行に 1 つのデータ項目)。
protected void Page_Load(object sender, EventArgs e)
{
// Note the query strings passed by jquery autocomplete:
//QueryString: {q=a&limit=150×tamp=1227198175320}
LookupTagCollection tags = Select.AllColumnsFrom<LookupTag>()
.Top(Request.QueryString["limit"])
.Where(LookupTag.Columns.TagDescription).Like(Request.QueryString["q"] + "%")
.OrderAsc(LookupTag.Columns.TagDescription)
.ExecuteAsCollection<LookupTagCollection>();
StringBuilder sb = new StringBuilder();
foreach (LookupTag tag in tags)
{
sb.Append(tag.TagDescription).Append("\n");
}
Response.Write(sb.ToString());
}
LIKE クエリを実行しない場合は、入力した文字に一致するものをすべて返します。たとえば、「a」と入力すると、「Ask」と「Answer」、「March」と「March」が含まれます。 「メガ」私はそれが最初から試合をしたかっただけです。
とにかく、それは機能し、セットアップは非常に簡単ですが、より良い方法はありますか?