使用ASP.NET AJAX开发文本框自动提示功能

这两天尝试使用ASP.NET AJAX Extensions给ThinkPage的PageRank查询增加了文本框自动提示功能。当用户在输入网站地址的文本框中输入的时候会自动弹出一个下拉菜单,显示最近查询过的网站,并不断根据输入文本的内容缩小范围。比如:当输入“w”的时候,会列出所有w开头的网址,当输入到“www.f”的时候,就只显示www.felixwoo.com了。当点击下拉菜单中的一个网址后,会自动完成文本框中的内容。整个过程和IE的地址栏效果类似。显示效果如图:
http://www.felixwoo.com/wp-content/uploads/attachments/200611/04_123834_autocomplete.jpg

这个功能是通过ASP.NET AJAX AutoCompleteExtender实现的,只需要几行代码即可搞定。
首先需要在页面上添加asp:AutoCompleteExtender标记,别忘了之前要有asp:ScriptManager的声明。

<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" TargetControlID="searchtext"
runat="server" ServiceMethod="GetCompletionList"
ServicePath="~/SearchAutoComplete.asmx" MinimumPrefixLength="1" />

其中TargetControlID为输入网址的文本框的ID,ServicePath为得到网站列表的webservice地址,ServiceMethod即那个webservice中的具体方法,MinimumPrefixLength=1意思是当输入一个字符的时候即开始提示。

在SearchAutoComplete.asmx中要做的就是从数据库中返回最近查询过的网站,并通过prefixText参数来过滤出只以prefixText开头的网站,这样才能实现逐级提示的功能。SearchAutoComplete.asmx代码如下:

[WebMethod]
public string[] GetCompletionList(string prefixText, int count)
{
List<string> list = DataProvider.GetURLList();
foreach (string s in list)
{
if (s.StartsWith(prefixText))
{
list.Add(s);
}
}
return list.ToArray();
}

其中List<string> list是声明的了一个string的范型,这个是.net 2.0中新增的功能,避免了原来使用ArrayList带来的装箱和拆箱的性能消耗。DataProvider.GetURLList()从从数据库返回所有网站列表,返回类型自然也是List<string>。其他的代码都很简单,相信一看就明白了。

就短短的几行代码就可以实现如此有趣和实用的功能,不能不说ASP.NET AJAX为我们做了太多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值