altas(ajax)控件(四):模糊匹配控件AutoComplete
2007-10-24 10:36
281 查看
[align=left]AutoComplete控件是一个让TextBox拥有匹配功能的TextBox辅助控件。它可以在输入时给你一些提示,Google的搜索页面已经使用了类似功能。[/align]
[align=left]它的效果图如下:[/align]
[align=left]例子如下:[/align]
[align=left]有一个名为“myTextBox”的TextBox,有一个WebService名为“AutoComplete.asmx”,当客户在TextBox输入字符时,TextBox把字符发回服务器端,并返回匹配的字符组,把他们显示在TextBox供客户选择。[/align]
[align=left]这样的设计在ajax中是一个典型的应用,那么我们来看看atlas给我们提供的解决方案。[/align]
[align=left]Atlas中存在一个控件AutoCompleteExtender,[/align]
在网页前端输入:
[align=left] <asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" />[/align]
[align=left] <ajaxToolkit:AutoCompleteExtender[/align]
[align=left] runat="server" [/align]
[align=left] BehaviorID="AutoCompleteEx"[/align]
[align=left] ID="autoComplete1" [/align]
[align=left] TargetControlID="myTextBox"[/align]
[align=left] ServicePath="AutoComplete.asmx" [/align]
[align=left] ServiceMethod="GetCompletionList"[/align]
[align=left] MinimumPrefixLength="4" [/align]
[align=left] CompletionInterval="500"[/align]
[align=left] EnableCaching="true"[/align]
[align=left] CompletionSetCount="13"[/align]
[align=left] CompletionListCssClass="autocomplete_completionListElement" [/align]
[align=left] CompletionListItemCssClass="autocomplete_listItem" [/align]
[align=left] CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"[/align]
[align=left] DelimiterCharacters=";, :">[/align]
[align=left] <Animations>[/align]
[align=left] <OnShow>[/align]
[align=left] <Sequence>[/align]
[align=left] <%-- Make the completion list transparent and then show it --%>[/align]
[align=left] <OpacityAction Opacity="100" />[/align]
[align=left] <HideAction Visible="true" />[/align]
[align=left] [/align]
[align=left] <%--Cache the original size of the completion list the first time[/align]
[align=left] the animation is played and then set it to zero --%>[/align]
[align=left] <ScriptAction Script="[/align]
[align=left] // Cache the size and setup the initial size[/align]
[align=left] var behavior = $find('AutoCompleteEx');[/align]
[align=left] if (!behavior._height) {[/align]
[align=left] var target = behavior.get_completionList();[/align]
[align=left] behavior._height = target.offsetHeight - 2;[/align]
[align=left] target.style.height = '0px';[/align]
[align=left] }" />[/align]
[align=left] [/align]
[align=left] <%-- Expand from 0px to the appropriate size while fading in --%>[/align]
[align=left] <Parallel Duration=".4">[/align]
[align=left] <FadeIn />[/align]
[align=left] <Length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteEx')._height" />[/align]
[align=left] </Parallel>[/align]
[align=left] </Sequence>[/align]
[align=left] </OnShow>[/align]
[align=left] <OnHide>[/align]
[align=left] <%-- Collapse down to 0px and fade out --%>[/align]
[align=left] <Parallel Duration=".4">[/align]
[align=left] <FadeOut />[/align]
[align=left] <Length PropertyKey="height" StartValueScript="$find('AutoCompleteEx')._height" EndValue="0" />[/align]
[align=left] </Parallel>[/align]
[align=left] </OnHide>[/align]
[align=left] </Animations>[/align]
</ajaxToolkit:AutoCompleteExtender>
常用属性
再看中的匹配方法
WebService
[align=left] ///<summary>[/align]
[align=left] ///返回匹配字符组[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="prefixText">用来匹配的字符</param>[/align]
[align=left] ///<param name="count">返回匹配字符组数</param>[/align]
[align=left] ///<returns></returns> [/align]
[align=left][WebMethod][/align]
[align=left] public string[] GetCompletionList(string prefixText, int count)[/align]
[align=left] {[/align]
[align=left] if (count == 0)[/align]
[align=left] {[/align]
[align=left] count = 10;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (prefixText.Equals("xyz"))[/align]
[align=left] {[/align]
[align=left] return new string[0];[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] Random random = new Random();[/align]
[align=left] List<string> items = new List<string>(count);[/align]
[align=left] for (int i = 0; i < count; i++)[/align]
[align=left] {[/align]
[align=left] char c1 = (char) random.Next(65, 90);[/align]
[align=left] char c2 = (char) random.Next(97, 122);[/align]
[align=left] char c3 = (char) random.Next(97, 122);[/align]
[align=left] [/align]
[align=left] items.Add(prefixText + c1 + c2 + c3);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return items.ToArray();[/align]
}
[align=left]它的效果图如下:[/align]
[align=left]例子如下:[/align]
[align=left]有一个名为“myTextBox”的TextBox,有一个WebService名为“AutoComplete.asmx”,当客户在TextBox输入字符时,TextBox把字符发回服务器端,并返回匹配的字符组,把他们显示在TextBox供客户选择。[/align]
[align=left]这样的设计在ajax中是一个典型的应用,那么我们来看看atlas给我们提供的解决方案。[/align]
[align=left]Atlas中存在一个控件AutoCompleteExtender,[/align]
在网页前端输入:
[align=left] <asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" />[/align]
[align=left] <ajaxToolkit:AutoCompleteExtender[/align]
[align=left] runat="server" [/align]
[align=left] BehaviorID="AutoCompleteEx"[/align]
[align=left] ID="autoComplete1" [/align]
[align=left] TargetControlID="myTextBox"[/align]
[align=left] ServicePath="AutoComplete.asmx" [/align]
[align=left] ServiceMethod="GetCompletionList"[/align]
[align=left] MinimumPrefixLength="4" [/align]
[align=left] CompletionInterval="500"[/align]
[align=left] EnableCaching="true"[/align]
[align=left] CompletionSetCount="13"[/align]
[align=left] CompletionListCssClass="autocomplete_completionListElement" [/align]
[align=left] CompletionListItemCssClass="autocomplete_listItem" [/align]
[align=left] CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"[/align]
[align=left] DelimiterCharacters=";, :">[/align]
[align=left] <Animations>[/align]
[align=left] <OnShow>[/align]
[align=left] <Sequence>[/align]
[align=left] <%-- Make the completion list transparent and then show it --%>[/align]
[align=left] <OpacityAction Opacity="100" />[/align]
[align=left] <HideAction Visible="true" />[/align]
[align=left] [/align]
[align=left] <%--Cache the original size of the completion list the first time[/align]
[align=left] the animation is played and then set it to zero --%>[/align]
[align=left] <ScriptAction Script="[/align]
[align=left] // Cache the size and setup the initial size[/align]
[align=left] var behavior = $find('AutoCompleteEx');[/align]
[align=left] if (!behavior._height) {[/align]
[align=left] var target = behavior.get_completionList();[/align]
[align=left] behavior._height = target.offsetHeight - 2;[/align]
[align=left] target.style.height = '0px';[/align]
[align=left] }" />[/align]
[align=left] [/align]
[align=left] <%-- Expand from 0px to the appropriate size while fading in --%>[/align]
[align=left] <Parallel Duration=".4">[/align]
[align=left] <FadeIn />[/align]
[align=left] <Length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteEx')._height" />[/align]
[align=left] </Parallel>[/align]
[align=left] </Sequence>[/align]
[align=left] </OnShow>[/align]
[align=left] <OnHide>[/align]
[align=left] <%-- Collapse down to 0px and fade out --%>[/align]
[align=left] <Parallel Duration=".4">[/align]
[align=left] <FadeOut />[/align]
[align=left] <Length PropertyKey="height" StartValueScript="$find('AutoCompleteEx')._height" EndValue="0" />[/align]
[align=left] </Parallel>[/align]
[align=left] </OnHide>[/align]
[align=left] </Animations>[/align]
</ajaxToolkit:AutoCompleteExtender>
常用属性
属性名称 | 说明 |
BehaviorID | 显示在TextBox下的下拉列表的ID |
ID | 当前控件的ID |
TargetControlID | 要匹配的TextBoxID |
ServicePath | WebService相对路径 |
ServiceMethod | WebService中用来匹配的方法 |
MinimumPrefixLength | 开始匹配的字符位数,从第几个字符开始匹配 |
CompletionInterval | 下拉列表出现的延时 |
EnableCaching | 是否使用缓存 |
CompletionSetCount | 显示的下拉列表的列数 |
DelimiterCharacters | 不需要匹配的字符集 |
WebService
[align=left] ///<summary>[/align]
[align=left] ///返回匹配字符组[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="prefixText">用来匹配的字符</param>[/align]
[align=left] ///<param name="count">返回匹配字符组数</param>[/align]
[align=left] ///<returns></returns> [/align]
[align=left][WebMethod][/align]
[align=left] public string[] GetCompletionList(string prefixText, int count)[/align]
[align=left] {[/align]
[align=left] if (count == 0)[/align]
[align=left] {[/align]
[align=left] count = 10;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (prefixText.Equals("xyz"))[/align]
[align=left] {[/align]
[align=left] return new string[0];[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] Random random = new Random();[/align]
[align=left] List<string> items = new List<string>(count);[/align]
[align=left] for (int i = 0; i < count; i++)[/align]
[align=left] {[/align]
[align=left] char c1 = (char) random.Next(65, 90);[/align]
[align=left] char c2 = (char) random.Next(97, 122);[/align]
[align=left] char c3 = (char) random.Next(97, 122);[/align]
[align=left] [/align]
[align=left] items.Add(prefixText + c1 + c2 + c3);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return items.ToArray();[/align]
}
相关文章推荐
- altas(ajax)控件(四):模糊匹配控件AutoComplete
- altas(ajax)控件(四):模糊匹配控件AutoComplete
- altas(ajax)控件(四):模糊匹配控件AutoComplete
- 微软Asp.net Ajax 1.0的AutoComplete控件的几处修正和增强
- altas(ajax)控件(二十三):等级选择控件Rating
- ASP.NET AJAX控件之AutoComplete
- altas(ajax)控件(六):CascadingDropDown 联动选择的下拉框
- altas(ajax)控件(十一):DropShadow为某一个控件添加阴影
- altas(ajax)控件(二):悬浮面板控件AlwaysVisibleControl
- 安卓控件——AutoCompleteTextView和MultiAutoCompleteTextView实现自动匹配输入的内容
- 使用jQuery Autocomplete(自动完成)插件,结合ajax实现搜索框匹配
- altas(ajax)控件(十三):悬浮菜单HoverMenu
- altas(ajax)控件(十八):拒绝机器人自动提交程序的控件NoBot
- 基于Ajax的编码、拼音缩写、名称模糊查询输入控件
- altas(ajax)控件(七):CollapsiblePanel可折叠面板
- altas(ajax)控件(十):DropDown让文本框拥有下拉列表
- altas(ajax)控件(十五):屏蔽编辑控件MaskedEdit
- altas(ajax)控件(十七):互斥复选框控件MutuallyExclusiveCheckBox
- 动态自动匹配输入的控件AutoCompleteTextView和MultiAutoCompleteTextView
- 原生ajax 实现输入框模糊查询,自动匹配数据库数据