我正在学习使用AjaxControlToolkit,AutoCompleteExtender是我使用的第一个控件,有关它的文章网上也有不少,不过很多都因为版本问题而不太正确了,让我在参考时也绕了些圈子,因此我把自己的实例写一下,适合和我一样的新手作参考(注:版本对应ASP.NET AJAX 1.0)
效果图:


首先配置好环境,安装过程参考:ASP.NET AJAX学习记要(3)-ASP.NET AJAX安装(VS2005下安装)
用AjaxControlToolkitWebSite模板新建网站
新建一个WebService,在代码页中加入以下代码

using ?System.Web.Script.Services;

?

[ScriptService]


然后写一个方法,用于返回自用完成时显示的数据列表

[WebMethod]

????
public ? string []?GetList( string ?prefixText,? int ?count)

????
{

????????
string[]?returnValue1?=?{?"张飞",?"张苞",?"张郃",?"张辽"?};

????????
string[]?returnValue2?=?{?"刘备",?"刘禅",?"刘璋",?"刘表"?};

????????
switch?(prefixText.ToLower())

????????
{

????????????
case?"":

????????????????
return?returnValue1;

????????????
case?"zhang":

????????????????
return?returnValue1;

????????????
case?"":

????????????????
return?returnValue2;

????????????
case?"liu":

????????????????
return?returnValue2;

????????????
default:

????????????????
return?new?string[0];

????????}

????}


其中prefixText是指定文本框内输入的值,根据这个值来做数据筛选,本例中为了简单就直接写死了
返回的值必须是字符串数组,如果是从数据源取得的表还需要把它转成数组后返回

然后在webform中添加控件,代码如下

< asp:TextBox?ID = " TextBox1 " ?runat = " server " ></ asp:TextBox >

????????
< asp:ScriptManager?ID = " ScriptManager1 " ?runat = " server " >

????????
</ asp:ScriptManager >

????????
< ajaxToolkit:AutoCompleteExtender?ID = " AutoCompleteExtender1 " ?runat = " server " ?TargetControlID = " TextBox1 " ?MinimumPrefixLength = " 1 " ?ServiceMethod = " GetList " ?ServicePath = " WebService.asmx " >

????????
</ ajaxToolkit:AutoCompleteExtender >
AutoCompleteExtender?的几个属性:
TargetControlID:要监视的文本控件ID
MinimumPrefixLength:触发自动完成功能的最少字数
ServicePath:WebService路径
ServiceMethod:刚才写的方法名称,用于返回数据

保存后运行一下看看,自动完成功能就是这么简单:)

?