preenchimento automático de jQuery e ASP.NET
Eu procurei em todo este site e na Web por uma boa esimples exemplo de preenchimento automático usando jQuery e ASP.NET. Eu queria expor os dados usados pelo preenchimento automático com um serviço da Web (e provavelmente o farei a seguir). Enquanto isso, eu consegui isso funcionando, mas parece um pouco hacky ...
Na minha página, tenho uma caixa de texto:
<input id="txtSearch" type="text" />
Estou usando o preenchimento automático do jQuery, configurado de acordo com o exemplo deles:
<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>
Aqui é onde começa a ficar hacky ... Chamo uma página em vez de um serviço da web:
<script type="text/javascript">
$(document).ready(function(){
$("#txtSearch").autocomplete('autocompletetagdata.aspx');
});
</script>
Na página, retirei TODO o html e apenas o tenho (caso contrário, vários bits HTML aparecerão no menu suspenso de preenchimento automático):
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="autocompletetagdata.aspx.cs" Inherits="autocompletetagdata" %>
E no meu autocompletetagdata.aspx, estou usando o SubSonic para consultar, formatar e retornar dados do banco de dados (um item de dados por linha):
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());
}
Se você não fizer uma consulta LIKE, ela retornará tudo o que contém uma correspondência para os caracteres digitados - por exemplo, digitar "a" incluirá "Perguntar" e "Resposta", além de "Março" e "Mega". Eu só queria começar com a partida.
Enfim, funciona e é muito fácil de configurar, mas existe uma maneira melhor?