ajaxToolkit:AutoCompleteExtender 用法详解

AutoCompleteExtender控件的属性:
   1.TargetControlID:指定将被辅助完成自动输入的控件ID,这里的控件只能是TextBox;
   2.ServicePath:指出提供服务的WEB服务路径,若不指出则ServiceMethod表示本页面对应的方法名;
   3.ServiceMethod:指出提供服务的方法名;
   4.MinimumPrefixLength:指出开始提供提示服务时,TextBox控件应有的最小字符数,默认为3;
   5.CompletionSetCount:显示的条数,默认为10;
   6.EnableCaching:是否在客户端缓存数据,默认为true;
   7.CompletionInterval:从服务器读取数据的时间间隔,默认为1000,单位:毫秒。

既然名为Extender, 就说明它是一个扩展控件, 它必须依赖于别人而存在-----这个别人指的是文本框. 所以, 首先要有一个宿主文本框:
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
这就是一个默认的文本框, 不需要任何多余的设定.  然后定义一个AutoCompleteExtender, 这里我们只设置了最基本的选项, 其它的选项后面我会说明:
<ajaxToolkit:AutoCompleteExtender ID="ac1" runat="server" TargetControlID="txt1" ServicePath="webservice.asmx" ServiceMethod="GetData" MinimumPrefixLength="1" ></ajaxToolkit:AutoCompleteExtender>
这样 , 前台的工作就完成了, 然后还需要添加一个web 服务, 来向AutoCompleteExtender返回数据. 向项目中添加一个"web服务"文件

添加以后, 会在项目中生成一个webservice.asmx 文件, 不用管它, 因为使用了代码分离, 所以它只是一个路径引用, 用记事本打开它, 会发现这个文件只有一行, 指向App_Code 下面的同名, 但是扩展名为.cs 的文件.  我们现在打开App_Code目录, 找到webservice.cs , 会看到这样的几行:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService] //这里是最重要的
public class WebService : System.Web.Services.WebService
默认情况下, 第三行属性[System.Web.Script.Services.ScriptService]  是被注释掉的, 把它打开 , 因为我们要在客户端调用. 然后就可以写入我们的方法了, 方法如下:
[WebMethod]
public string[] GetData(string prefixText, int count)
{
string[] data = new string[10000];
for (int i = 0; i < data.Length; i++)
data[i] = i.ToString("0000");
return data.Where(p => p.IndexOf(prefixText) >= 0).Take(count).ToArray();
}


此控件支持Firefox不是很好

原文地址:https://www.cnblogs.com/studyC/p/2220032.html