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

效果图:

使用AutoCompleteExtender(自动完成下拉菜单)实例_控件


首先配置好环境,安装过程参考:​​ASP.NET AJAX学习记要(3)-ASP.NET AJAX安装(VS2005下安装)​​ 用AjaxControlToolkitWebSite模板新建网站

新建一个WebService,在代码页中加入以下代码


使用AutoCompleteExtender(自动完成下拉菜单)实例_ajax_02

using  System.Web.Script.Services;

 

使用AutoCompleteExtender(自动完成下拉菜单)实例_ajax_02

[ScriptService]

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


使用AutoCompleteExtender(自动完成下拉菜单)实例_ajax_02

[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中添加控件,代码如下



使用AutoCompleteExtender(自动完成下拉菜单)实例_ajax_02

< 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
"
>


使用AutoCompleteExtender(自动完成下拉菜单)实例_ajax_02

         </ ajaxToolkit:AutoCompleteExtender > AutoCompleteExtender 的几个属性:


TargetControlID:要监视的文本控件ID


MinimumPrefixLength:触发自动完成功能的最少字数


ServicePath:WebService路径


ServiceMethod:刚才写的方法名称,用于返回数据



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


使用AutoCompleteExtender(自动完成下拉菜单)实例_数据_07