使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(上)

作者:Dflying Chen http://dflying.cnblogs.com/

请同时参考:使用ASP.NET Atlas AutoComplete BehaviorAutoComplete Extender实现自动完成功能(下)

相信对AJAX略有了解的朋友都知道自动完成功能(如果您还不知道,请尝试一下Google Suggest),甚至好多朋友就是看到它带来的令人眩目的功能才对AJAX感兴趣,并开始学习的。ASP.NET Atlas同样提供了内建的,非常简单易用的自动完成支持。

ASP.NET Atlas提供两种方法让我们在程序中使用自动完成,它们提供相同的功能,但有各自的的特点与适用范围:

  1. 客户端AutoComplete Behavior:完全使用客户端脚本实现。由于不涉及服务器端控件解析,较节省服务器资源,而且可以方便的与其他Atlas客户端控件无缝集成,但相对于初学者,学习以及使用的难度偏大,且在开发中没有智能感知的支持,也较难以调适。它适合熟悉Atlas的开发者从零开始创建“纯粹”的AJAX程序。
  2. 服务器端AutoComplete Extender:使用服务器端控件实现。由于使用了ASP.NET控件模型,它自然得到设计期IDE的支持以及编译期检查,熟悉ASP.NET的开发人员可以很方便的上手。但对于客户端实现,它的效率较低,并不易于与其他客户端Atlas控件集成交互。它较适合在很小的改变中为现有程序添加“部分”的AJAX行为。

客户端AutoComplete Behavior继承于Sys.UI.Behavior(关于Sys.UI.Behavior,可以参考:在ASP.NET Atlas中创建自定义的Behavior)。AutoComplete Behavior有如下属性:

  1. serviceURL:提供自动完成功能的服务器端Web Service的路径。
  2. serviceMethod:提供自动完成功能的服务器端的Web Method名称,该Web Method应该有类似的签名:public String[] GetSuggestions(string prefixText, int count)。其中prefixText为客户端传入的当前输入的字符串,count为返回的提示列表中的最大条目数,同时它应该返回一个string数组,表示提示列表。
  3. minimumPrefixLength:开始提供自动完成列表的文本框内最少的输入字符数量。默认值为3。如果用户刚刚输入一两个字母,您就迫不及待的提供给他一长串的列表,这既没什么意义,也会极大浪费服务器与网络资源。只有用户输入了等于或超过某个数目(由本属性设定)时,给出的建议才是有价值的,Atlas也才会查询服务器端的相应方法并显示给用户提示列表。
  4. completionInterval:每次查询后台的间隔时间,默认值是1000(毫秒)。如果该值太大,则给用户带来程序反应迟钝的印象,如果太小,则加重服务器与网络负担。一般来讲,500-2000是一个比较合理的值。
  5. completionList:显示提示列表的DOM元素。如果不指定,Atlas会自动在相关的TextBox下面创建一个DIV来显示。一般情况下我们无须指定这个属性。
  6. completionSetCount:提示列表中的最大项目数,默认值为10

服务器端AutoComplete Extender继承于ExtenderControl,类似的,有如下属性:

  1. ServicePath:类似客户端AutoComplete BehaviorserviceURL属性。
  2. ServiceMethod:类似客户端AutoComplete BehaviorserviceMethod属性。
  3. DropDownPanelID:类似客户端AutoComplete BehaviorcompletionList属性,不过这里指定的是服务器端<asp:Panel />ID。一般情况下我们无须指定这个属性。
  4. MinimumPrefixLength:类似客户端AutoComplete BehaviorminimumPrefixLength属性。

在使用服务器端AutoComplete Extender时,您需要为其至少指定一个AutoCompleteProperties子控件。AutoCompleteProperties控件用来指定为某个特定的TextBox添加自动完成功能,它同样提供一些属性,其中包含了与上述AutoComplete Extender相同的ServicePathServiceMethodMinimumPrefixLength三个属性。如果您在AutoComplete ExtenderAutoCompleteProperties中都设定了上述某种属性,那么设定在AutoCompleteProperties中的会覆盖设定在AutoComplete Extender中的。除此之外,AutoCompleteProperties还提供如下属性:

  1. Enabled:是否启用自动完成功能,您应该将其置为true以启用自动完成。默认值为false
  2. TargetControlID:指定该自动完成功能将应用到哪个TextBox上,应设置为服务器端TextBoxID

注:今天实在有点累了,本来要写的示例程序明天再来完成吧……抱歉
注2:示例程序已经完成:使用ASP.NET Atlas AutoComplete BehaviorAutoComplete Extender实现自动完成功能(下)

posted on 2006-05-11 23:20  Dflying Chen  阅读(5562)  评论(7编辑  收藏  举报