我在这个网站和网页上搜索了一个使用jQuery和ASP.NET自动完成的简单例子.我想用web服务公开自动完成所使用的数据(接下来可能会这样做).与此同时,我得到了这个工作,但似乎有点hacky ......
在我的页面中,我有一个文本框:
<input id="txtSearch" type="text" />
Run Code Online (Sandbox Code Playgroud)
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
这是它开始变得hacky ...我称之为页面而不是web服务:
<script type="text/javascript">
$(document).ready(function(){
$("#txtSearch").autocomplete('autocompletetagdata.aspx');
});
</script>
Run Code Online (Sandbox Code Playgroud)
在页面中我删除了所有的html并且只有这个(否则,各种HTML位显示在自动完成下拉列表中):
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="autocompletetagdata.aspx.cs" Inherits="autocompletetagdata" %>
Run Code Online (Sandbox Code Playgroud)
在我的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)
{ …Run Code Online (Sandbox Code Playgroud)