微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AjaxToolKit--AutoComplete的介绍

1.       Introduction

AutoComplete控件确实是个好东西,当下各大搜索引擎都都很厉害的自动完成功能。大家每天都在使用。 它实现的功能是当你在一个文本框输入字符时,然后使用web service方法返回一些和你输入的字符相似的字符串节省你的文本输入时间并有可以给你提示功能

AutoComplete一个可以附属到任何一个TextBox上的控件,WebService中可以调用数据库中的数据,googleAPI,或者是一些随机生成数据的函数等等。

 

 

2.       Properties:

    <ajaxToolkit:autocompleteextender 
            runat="server" 
            ID="autoComplete1" 
            TargetControlID="myTextBox"
            ServiceMethod="GetCompletionList"
            ServicePath="AutoComplete.asmx"
            MinimumPrefixLength="2" 
            CompletionInterval="1000"
            EnableCaching="true"
            CompletionSetCount="20" 
            CompletionListCssClass
                ="autocomplete_completionListElement" 
            CompletionListItemCssClass
                ="autocomplete_listItem" 
            CompletionListHighlightedItemCssClass
                ="autocomplete_highlightedListItem"
            DelimiterCharacters=";,:">
            <Animations>
            <OnShow> ... </OnShow>
            <OnHide> ... </OnHide>
            </Animations>
            </ajaxToolkit:autocompleteextender>
        

上面是个完整的autocompleteextender结构,其中斜体部分为可选的设置:

a.       TargetControlID: 需要添加自动提示TextBox空间ID.

b.       ServicePath: Web Service的路径,一般就是个asmx文件一个cs文件,WCF中就不是个asmx文件了。

c.       ServiceMethod: 提供自动完成下拉列表的一个方法,且必须是servicePath一个方法

d.       ContextKey: 如果设置了这个字段值,那么就需要在web service方法的参数中设置一contextKey命名的字符串。

 [System.Web.Services.WebMethod]

[System.Web.Script.Services.ScriptMethod]

public string[] GetCompletionList(

string prefixText,int count,string contextKey)

{ ... }

e.       UseContextKey: 如果ContextKey被设置,那么该属性自动设置。

f.        MinimunPrefixLength: TextBox中最少输入几个字符时,开始出现自动完成提示

g.       CompletionInternal: 以微妙为单位表示调用Web Service的间隔。

h.       EnableCaching: 是否使用客户端缓存。Y,N.

i.        CompletionSetCount: 每次显示提示数据的个数。

j.        CompletionListCssClass: 自动提示下拉列表Css样式。

k.       CompletionListItemCssClass: 自动提示下拉列表的各个字符串的Css样式。

l.        CompletionListHighlightedItemCssClass: 当某个数据项被选中时这个数据项的Css样式。

m.     DelimiterCharacters - 可以指定若干个字符来切分输入框中的字符,作为不同的数据提示检索条件

n.       FirstRowSelected - 标志提示信息框中是否认第一条数据项被选中

o.       Animations - AutoComplete 扩展动画。

p.       显示 - 显示提示信息的时候出现的动画。动画可以应用 <HideAction Visible="true" />来控制显示提示框的其可视化信息

q.       隐藏 - 提示信息框被关闭时出现的动画

 

3.       Example:

前面都是介绍属性,这部分会三个例子,一个MS提供的调用一个随机生成数的方法,

还有两个是我给大家提供的分别调用Google Api和从数据库查找匹配数据的方法

我使用的是VS2005,而且已经安装好了ajaxtoolkit,

第一步: 创建一个ajaxtoolkit模板:

 

随便起个名字,可以为AjaxControlToolKit_Autocomplete

 

第二步: 先以MS提供的那个例子说明一下:先向default.aspx页面拖入一个textBox,修改它的IDmyTextBox,然后在TextBox下面拖入一个AjaxToolKit控件autocompleteextender,修改它的IDautocomplete1,然后再添加一个HTML控件input,类型为submit,然后设置styledisplay:none.

 

上面的截图中可以看到当字符串为两个或以上时才会出现自动提示,且每次展示20条。

这里用动画来实现的下拉列表,主要是实现了当浏览器第一次实现自动完成时得到它的自动提示列表的长度,然后用fade来慢慢展示和收缩下拉列表,(如果你对animation不了解,可以看看前面那边文章)

这里还用到一段javascirpt解决浏览器单个form自动提交行为。。

<script type="text/javascript">

                // Work around browser behavior of "auto-submitting" simple forms

                var frm = document.getElementById("form1");

                if (frm) {

                    frm.onsubmit = function() { return true; };

                }

            </script>

具体的代码可以再文章后面提供的链接中下载。

然后就是创建一个web service文件,如果没用过web service也别担心,很简单的。

先选择add item添加一个autocomplete.asxm文件,如下图,vs自动app_code文件生成一个AutoComplete.cs文件:

 

代码文件添加一个web方法:

 

然后你运行一下,就可以感受自动完成的功能了。

第二个例子是从数据库一个city表中取出所有匹配的城市名字,作为自动下拉列表。

 

后台web方法还是在autocomplete.asmxcs文件中。

 

 

注意在web.config添加connctionString和在引用命名空间那里加上using System.Configration

第三个例子是引用googleAPI来实现搜索

首先需要在页面拖入一个textBox,一个button一个autocompleteextender

Aspx文件如下:

 

Web service如下:

 

同时为了让你的button能够转到google搜索你需要在default.aspx文件后台加上如下代码:

 

第四步:用到的css:

 

 

4.       Layout and sourcecode:

 

代码下载:http://download.csdn.net/source/1417000

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐