Ich suchte überall auf dieser Website und im Internet nach einem guten und einfachen Beispiel für Autovervollständigung mit jQuery und ASP.NET. Ich wollte die von Autocomplete verwendeten Daten mit einem Webservice versehen (und werde das wahrscheinlich als nächstes machen). In der Zwischenzeit habe ich diese Arbeit, aber es scheint ein wenig hacky ...jQuery Autocomplete und ASP.NET
In meiner Seite habe ich ein Textfeld:
<input id="txtSearch" type="text" />
ich jQuery Autocomplete bin mit eingesetzter pro ihrem Beispiel:
<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>
Hier ist, wo es beginnt hacky zu bekommen ... ich nenne eine Seite anstelle eines Webservice:
<script type="text/javascript">
$(document).ready(function(){
$("#txtSearch").autocomplete('autocompletetagdata.aspx');
});
</script>
In die Seite zog ich alle HTML und nur diese haben (sonst zeigen verschiedene HTML-Bits in dem Autocomplete-Drop-Down-up):
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="autocompletetagdata.aspx.cs" Inherits="autocompletetagdata" %>
Und in meinem autocompletetagdata.aspx, ich SubSonic abfragen verwenden, Format und Rück Daten aus der Datenbank (einem Datenelement pro Zeile):
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());
}
Wenn Sie nicht über eine LIKE Abfrage tun, dann gibt es alles, was ein Spiel für das Zeichen enthält (n) geben - zum Beispiel, das Eingeben von "a" umfasst "Ask" und "Answer" sowie "March" und "Mega". Ich wollte nur, dass es mit einem Match beginnt.
Wie auch immer, es funktioniert und es ist ziemlich einfach einzurichten, aber gibt es einen besseren Weg?
Dank djuth funktioniert diese groß und ist sehr einfach! Ich muss zugeben, dass es ziemlich einschränkend ist, zum Beispiel würde ich es lieben, wenn es einen Personalnamen automatisch vervollständigt und dann eine staffID zurückgibt, aber ich kann wahrscheinlich mit dem experimentieren, was hinzugefügt und geparst wurde. –
Dies ist jetzt veraltet und integriert mit JQuery UI - http://www.learningjquery.com/2010/06/autocomplete-migration-guide zeigt, wie zu migrieren, nicht viel zu es! – Duncan