本例用到的所有辅助控件与数据均为小编测试所用,具体使用时请读者自行更改!
一、首先建一个AJAX web页面,然后添加一个TextBox,然后添加扩展程序选择utoCompleteExtender控件。
二、设置AutoCompleteExtender的必要属性:
TargetControl--属性关联为TextBox;
MinimumPrefixLength--为输入多少个字符串后就执行自动关联数据;
ServicePath--是所用到读取数据的WebService文件的名字;
CompletionSetCount--是下拉框中的最多数据数量;
CompletionInterval--是输入字符后等待查询的时间(1000就是1秒),就是用户停顿多久后开始执行查询;
ServiceMethod--webservice返回数据的方法名。
示例如下:
<asp:Manager ID="Manager1" runat="server" / >
<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox >
<cc1:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" DelimiterCharacters="" Enabled="True" MinimumPrefixLength="3" ServiceMethod="GetCompleteList" ServicePath="WebService.asmx" TargetControlID="TextBox1" UseContextKey="True" CompletionSetCount="30" CompletionInterval="100" >
</cc1:AutoCompleteExtender >
三、添加WebService,来获取数据库中的数据,小编自己测试时是用数据库中数据,读者可以自行选行任何数据源,只要ServiceMethod指定的方法返回一个string[]结果集就行。
示例如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
[WebService(Namespace = "http://www.lmwlove.com/")]
[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=.;uid=sa;pwd=719418;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;
[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)
{
List<string > items = new List<string >();
for (int i = 0; i<count; i++)
{
items.Add(i.ToString());
}
return items.ToArray();
}
}