您的位置:首页 > 其它

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>
常用属性
属性名称
说明
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]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: