AjaxToolKit--AutoComplete的介绍
1.?????? Introduction AutoComplete控件确实是个好东西,当下各大搜索引擎都都很厉害的自动完成功能。大家每天都在使用。 它实现的功能是当你在一个文本框输入字符时,然后使用web service的方法返回一些和你输入的字符相似的字符串节省你的文本输入时间并有可以给你提示的功能。 AutoComplete是一个可以附属到任何一个TextBox上的控件,在WebService中可以调用数据库中的数据,google的API,或者是一些随机生成数据的函数等等。 ? 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模板: ? ? 第二步: 先以MS提供的那个例子说明一下:先向default.aspx页面拖入一个textBox,修改它的ID为myTextBox,然后在TextBox下面拖入一个AjaxToolKit控件AutoCompleteExtender,修改它的ID为autocomplete1,然后再添加一个HTML控件input,类型为submit,然后设置style为display:none. ? 这里用动画来实现的下拉列表,主要是实现了当浏览器第一次实现自动完成时得到它的自动提示列表的长度,然后用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文件: ? ? 第二个例子是从数据库的一个city表中取出所有匹配的城市名字,作为自动下拉列表。 ? ? ? 第三个例子是引用google的API来实现搜索。 首先需要在页面拖入一个textbox,一个button和一个AutoCOmpleteExtender。 Aspx文件如下: ? Web service如下: ? 同时为了让你的button能够转到google的搜索你需要在default.aspx文件后台加上如下代码: ? 第四步:用到的css: ? ? 4.?????? Layout and sourcecode: ? 源代码下载:http://download.csdn.net/source/1417000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |