jQuery Автозаполнение и ASP.NET
Я искал по всему этому сайту и в Интернете для хорошего ипросто Пример автозаполнения с использованием jQuery и ASP.NET. Я хотел предоставить данные, используемые автозаполнением, с помощью веб-сервиса (и, вероятно, сделаю это позже). В то же время, я получил это работает, но это кажется немного хакерским ...
На моей странице есть текстовое поле:
<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>
Вот где это начинает становиться хакерским ... Я называю страницу вместо веб-сервиса:
<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 для запроса, форматирования и возврата данных из базы данных (один элемент данных на строку):
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» и "Мега." Я просто хотел, чтобы это началось с матча.
Во всяком случае, это работает, и его довольно легко настроить, но есть ли лучший способ?