TextBox AutoCompleteExtender自动完成

概述
TextBox的AutoComplete有的时候对我们很有用,你可能也见过这样的功能。
本文展示如何使用AJAX Control Toolkit来实现这个功能,几乎所有的文章都是描述如何使用Ajax通过Web服务获取自动完成的文本,但本文介绍如何从aspx code文件中返回所需要的数据,而不是通过Web服务。

 
示例
如果你还没有下载AJAX Control Toolkit。可以通过这里http://www.asp.net/ajaxlibrary/act.ashx  获取介绍和工具包。我们这里使用Visual studio 2010创建一个ASP.NET Web项目,然后应用AJAX toolkit 的dll。将一个文本框TextBox控件拖拽到default.aspx页面。
为工具箱添加AJAX Control Tookit
1.右键单击工具箱的空白处添加一个新的选项卡AJAX Control Toolkit。
2.右键单击AJAX Control Tookit空白处,选择Choose Items菜单。
在打开的对话框中单击浏览按钮,找到AJAX Control Toolkit的dll文件并添加,如下图所示:




单击OK后,AJAX Control Tookit的所有控件就被添加到选项卡中:




这真是一个不错的工具库,特别是对于哪些不是很熟悉脚本(JS/JQuery)的开发人员是个不错的选择。
 
添加代码
1.为了要使用这些控件,我要在页面上继续拖拽一个ToolkitScriptManager控件。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    <h2>
        Welcome to ASP.NET!</h2>
    <h2>
        &nbsp;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </h2>
</asp:Content>
 

2.继续添加我们需要的AutoCompleteControlExtender到default.aspx。

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
            ID="AutoCompleteExtender1"
            runat="server"
            ServiceMethod="GetDatas"
            TargetControlID="TextBox1">
</asp:AutoCompleteExtender>
 

TargetControlID指定关联的控件。ServiceMethod指定返回所需要数据的方法。
 
3.在default.aspx.cs文件中添加GetDatas静态方法。

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string[] GetDatas(string prefixText, int count)
{
     string[] strArray = { "ASP.NET","ASP.NET培训","ASP.NET工程师",
                                "Google","Google翻译","Google总部"};
     return (from m in strArray
             where m.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase)
             select m).Take(count).ToArray(); ;
}
 

我们使用LIINQ查询表达式来筛选需要的数据,返回prefixText前缀字符的count个数的集合。Take是返回前n个数据。
 
注意

  • ServiceMethod中指定的方法需要声明成static类型,而且还要添加WebMethod和ScriptMethod特性说明。
  • 方法的参数是 prefixText表示前缀字符,count自动完成建议的个数(默认10个),而且参数的名称和类型都不能改变。
  • 方法返回一个字符串数组。
  •  

结果如下:


还可以通过指定AutoCompleteExtender的属性 MinimumPrefixLength来指定启动自动完成前缀字符的个数。设置样式,字符串分隔符号以及客户端的一些操作等等。更多内容请浏览参考资料。
 
代码下载
 
AutoComplete.zip

更多内容欢迎订阅邮件列表:

posted @ 2011-08-30 11:24  敏捷学院  阅读(798)  评论(0编辑  收藏  举报