您的位置:首页 > 其它

[转]轻松掌握Ajax.net系列教程十五:使用AutoCompleteExtender

2009-11-25 15:18 1046 查看
本章介绍AutoCompleteExtender的使用方法。用过Google的朋友都会发现,当我们在搜索框输入关键字的时候,Google会自动列出相关关键字提示。那么用Ajax.net也能做到么?答案是:Of course!

第一步:建立AJAX Control Toolkit Website

本例子只需要一个TextBox控件和一个AutoCompleteExtender组件。拖进设计界面后代码如下所示:

[align=left]<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>[/align]
[align=left]<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server">[/align]
[align=left]</ajaxToolkit:AutoCompleteExtender>[/align]
第二步:建立WebService

要使用AutoCompleteExtender,我们要通过WebService传递数据。在解决方案资源管理器单击项目-〉添加新项-〉Web服务。我在这里使用了默认的名称,大家有需要自己改吧。

WebService.asmx的代码如下:

[align=left]using System;[/align]
[align=left]using System.Web.Services;[/align]
[align=left]using System.Collections.Generic;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]///<summary>[/align]
[align=left]/// WebService 的摘要说明[/align]
[align=left]///</summary>[/align]
[align=left][WebService(Namespace = "http://tempuri.org/")][/align]
[align=left][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][/align]
[align=left][System.Web.Script.Services.ScriptService][/align]
[align=left]public class WebService : System.Web.Services.WebService {[/align]
[align=left] [/align]
[align=left] public WebService () {[/align]
[align=left] [/align]
[align=left] //如果使用设计的组件,请取消注释以下行 [/align]
[align=left] //InitializeComponent(); [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [WebMethod][/align]
[align=left] public string[] GetCompleteList(string prefixText, int count) {[/align]
[align=left] char c1, c2, c3;[/align]
[align=left] if (count == 0)[/align]
[align=left] count = 10;[/align]
[align=left] List<String> list = new List<string>(count);[/align]
[align=left] Random rnd = new Random();[/align]
[align=left] for (int i = 1; i <= count; i++)[/align]
[align=left] {[/align]
[align=left] c1 = (char)rnd.Next(65, 90);[/align]
[align=left] c2 = (char)rnd.Next(97, 122);[/align]
[align=left] c3 = (char)rnd.Next(97, 122);[/align]
[align=left] list.Add(prefixText + c1 + c2 + c3);[/align]
[align=left] }[/align]
[align=left] return list.ToArray();[/align]
[align=left] }[/align]
[align=left]}[/align]
注意:加亮部分大家要自行添加。[System.Web.Script.Services.ScriptService]一定要加,它告诉.net runtime这个WebService被允许从客户端调用。另外System.Collections.Generic是List的命名空间,List可以理解成物件或类别的集合,我们可以根据特殊条件在List里找到我们所需要的值,是.net 2.0新增加的类。该函数的意思是产生三个随机字母,自动添加在输入字符串的后面。另外prefixText和count这两个参数名称要严格遵守拼写格式,原因以前已经介绍过了。

第三步:设置AutoCompleteExtender

具体设置代码如下:

[align=left]<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"[/align]
[align=left] TargetControlID="TextBox1"[/align]
[align=left] CompletionSetCount="12"[/align]
[align=left] EnableCaching="true"[/align]
[align=left] MinimumPrefixLength="3"[/align]
[align=left] ServicePath="WebService.asmx"[/align]
[align=left] ServiceMethod="GetCompleteList">[/align]
</ajaxToolkit:AutoCompleteExtender>
TargetControlID是目标控件ID,这里是TextBox1。CompletionSetCount是指列表列出输入提示的数量。EnableCaching指是否启用缓存,建议启动。MinimumPrefixLength是指输入多少个字符后开始列出输入提示列表。ServicePath是指Web服务的文件名,这里是WebService.asmx。ServiceMethod是指调用Web服务的函数名,这里是GetCompleteList。

OK,运行!效果如下图:



结束:

本章介绍了AutoCompleteExtender的使用方法。在本例子中,我只是通过简单的算法产生随机字母并添加到输入字符串后面。这种方法实用性不大,建议大家在实际使用时自行编写更复杂的算法,让AutoCompleteExtender产生更实用的效果。

引用地址:http://www.falaosao.net/article.asp?id=165
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: