字符输入文本框后,下拉框自动出现想要的字符,选择后读取到文本框中。如图:
我用的是本地SQL2000的pubs数据库中的authors表的au_lname字段
自动完成“非主流” -- AutoComplete控件_职场
 
一、首先建一个AJAX web页面,然后添加一个TextBox,然后添加扩展程序选择AutoCompleteExtender控件。(我用的是VS2008,VS2005直接往页面里拖就可以了)
自动完成“非主流” -- AutoComplete控件_AJAX控件_02
二、然后设置AutoCompleteExtender的属性,TargetControl属性关联为TextBox;MinimumPrefixLength输入几个字符串就自动关联数据;ServicePath是WebService文件的名字;CompletionSetCount是下拉框中的最多数据个数;CompletionInterval是输入字符后响应的时间(1000就是1秒);ServiceMethod="GetCompleteList" 是webservice返回的参数。
<div>
    <asp:.Manager ID=".Manager1" runat="server" />
    <br />
    <asp:TextBox ID="TextBox1" runat="server" ;181px"></asp:TextBox>
    <cc1:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server"
                 DelimiterCharacters="" Enabled="True" MinimumPrefixLength="1"
        ServiceMethod="GetCompleteList" ServicePath="WebService.asmx"
        TargetControlID="TextBox1" UseContextKey="True" CompletionSetCount="30"
        CompletionInterval="100">
    </cc1:AutoCompleteExtender>
</div>
 
三、添加一个WebService,来获取数据库中的数据。我用的数据库,当然
webservice也可以获取其他的字符串。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "
http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web...Services..Service]

public class WebService : System.Web.Services.WebService {
    public WebService () {
        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }
    [WebMethod]
    public string[] GetCompleteList(string prefixText, int count) 
    {
      
List<string> items = new List<string>(count);//泛型 
        SqlConnection myCon = new SqlConnection("Server=DR-73D504168BAF\\NETSK;uid=sa;pwd=L;Database=pubs");//数据库连接 ,我用了我本地的实例化的数据库。
        myCon.Open();//打开数据库连接
        SqlCommand myCmd = new SqlCommand("select top " + count + " au_lname from authors where au_lname like '" + prefixText + "%'group by au_lname order by au_lname ", myCon);
        SqlDataReader myDR = myCmd.ExecuteReader();
        while (myDR.Read())
        {
            items.Add(myDR["au_lname"].ToString());
        }
        myCon.Close();//关闭数据库连接
        return items.ToArray();
    }
}
 
又例如:
using System;
using System.Web;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;
/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//用以调用Web Service方法签名
[System.Web...Services..Service]
public class WebService : System.Web.Services.WebService {
    public WebService () {}
    [WebMethod]
    public string[] GetCompletionList(string prefixText, int count)
    {
        //if (count == 0)
        //{
        //    count = 10;
        //}
        Random random = new Random();
        List<string> items = new List<string>(count);
        for (int i = 0; i &lt; count; i++)
        {
            char c1 = (char)random.Next(65,90);
            char c2 = (char)random.Next(97, 122);
            char c3 = (char)random.Next(48, 57);
            char c4 = (char)random.Next(33, 43);
            items.Add(prefixText + c1 + c2 + c3 + c4);
        }
        return items.ToArray();
    }
}