字符输入文本框后,下拉框自动出现想要的字符,选择后读取到文本框中。如图:
我用的是本地SQL2000的pubs数据库中的authors表的au_lname字段
一、首先建一个AJAX web页面,然后添加一个TextBox,然后添加扩展程序选择AutoCompleteExtender控件。(我用的是VS2008,VS2005直接往页面里拖就可以了)
二、然后设置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>
<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>
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;
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 {
///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();
}
//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();
}
{
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;
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 {
/// 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 < 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();
}
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 < 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();
}
}
转载于:https://blog.51cto.com/mixangel/136275
本文介绍如何在ASP.NET AJAX中实现文本框自动补全功能,通过结合AutoCompleteExtender控件与WebService,从SQL Server数据库动态获取匹配项。


1500

被折叠的 条评论
为什么被折叠?



