现在的位置: 首页 > 综合 > 正文

AjaxControlTookit系列之AutoComplete

2012年10月07日 ⁄ 综合 ⁄ 共 1940字 ⁄ 字号 评论关闭

这里要实现的是AjaxControlTookit的AutoComplete功能,这个功能用在一般的页面搜索的地方,使用起来非常的简单,不过你如果想扩展的话,那就得另外想办法了,这里只介绍AutoCompleteExtender这个控件是如何实现的,好下面开始。

还是先让大家看看效果图吧:

页面部分:

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
作者:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" />
<br />
<ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" MinimumPrefixLength="1"
TargetControlID
="TextBox1" ServiceMethod="GetSearchWriter" ServicePath="GetItems.asmx"
CompletionInterval
="1000" EnableCaching="false">
</ajaxToolkit:AutoCompleteExtender>
</ContentTemplate>
</asp:UpdatePanel>
</form>

页面设置很简单,就是拖一个ScriptManager,再拖个UpdatePanel,最后再拖个AutoCompleteExtender放到ContentTemplate里,这里主要的是要设置AutoCompleteExtender里面的属性,其实也很容易理解,大家一看就会明白了,不用我多说了。

接下来是新建一个Web服务,如GetItems.asmx,它的代码如下:

 

using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Web.Script.Services;
using System.Configuration;

[WebService(Namespace
= "http://tempuri.org/")]
[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class GetItems : System.Web.Services.WebService {
[WebMethod]
[ScriptMethod]
public string[] GetSearchWriter(string prefixText, int count)
{
try
{
SqlConnection cn
= new SqlConnection(ConfigurationManager.ConnectionStrings["Sql2005Express"].ConnectionString);
string sql = "SELECT DISTINCT TOP " + count + " newswriter FROM testNews WHERE newswriter like '%" + prefixText + "%' ";
SqlCommand cmd
= new SqlCommand(sql, cn);
List
<string> listnews = new List<string>();
cn.Open();

//newswriter
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
listnews.Add(dr[
0].ToString());
}
dr.Close();
cn.Close();
return listnews.ToArray();
}
catch (Exception ex)
{
throw ex;
}

}


}

这里需要注意的地方有:

1、在类的前面要标注[ScriptService]

2、在方法的前面要标注[ScriptMethod]

3、参数的名称请不要改,就是string prefixText, int count

做到以上几点就可以实现了,没有试过的朋友赶紧去试试吧!~。

如果你有更好的想法或意见,可以留言。

抱歉!评论已关闭.