繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> atlas学习系列之二(AutoCompleteExtender篇)

atlas学习系列之二(AutoCompleteExtender篇)

2007-09-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:原来做ASP.net的时候,有些表单是带有参照类型的,比如城市的省份城市的录入,或者员工姓名的录入,以前的做法是走了两个极端,一种是用户在 TextBox中输入,另一种是在DropDownList中进行选择。第一种用户需要记...

原来做ASP.net的时候,有些表单是带有参照类型的,比如城市的省份城市的录入,或者员工姓名的录入,以前的做法是走了两个极端,一种是用户在 TextBox中输入,另一种是在DropDownList中进行选择。第一种用户需要记住录入的全部内容,输入效率才高,第二种无需提前知道录入内容,但是当供选择的记录过多的时候,选择起来也比较麻烦。那么一种智能式选择是一种折中的做法,我们原来是设置字典参照,然后在字典中选择。现在有了 Atlas,这种事情实现起来就简单多了。atlas的AutoCompleteProperties就可以满足这方面的要求。它可以通过设置 TargetControlID来控制某个控件,并且需要提供一个Web Services的路径和Web Services的方法。

AutoCompleteProperties的属性包括

属性名称

属性描述

备注

TargetControlID

指定要控制的控件的ID

一般为TextBox的ID

ServicePath

处理智能选择列表的Web Services路径

ServiceMethod

处理智能选择列表的网络服务服务

该方法一般包含两个参数(string prefixText, int count)

Enabled

是否可用

MinimumPrefixLength

最小前缀的长度大小

当输入长度达到最小的时候,便提供智能选择

下面是一个Demo:

按照上篇文章介绍,创建一个Atlas网站,然后再一个页面中添加如下代码:

1

2

3

4

5 runat="server">

6

7

8

9

10

下面是处理智能选择的网络服务:

1using System;

2using System.Web;

3using System.Collections;

4using System.Web.Services;

5using System.Web.Services.Protocols;

6using System.IO;

7

8

9/**////

10/// WebService 的摘要说明

11///

12[WebService(Namespace = "http://tempuri.org/")]

13[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

14public class WebService : System.Web.Services.WebService {

15

16 public WebService () {

17

18 //如果使用设计的组件,请取消注释以下行

19 //InitializeComponent();

20 }

21 public string[] AutoCompletewordList = null;

22 [WebMethod]

23 public string[] GetwordList(string prefixText, int count)

24 {

25 if (AutoCompletewordList == null)

26 {

27 string[] tempList = File.ReadAllLines(Server.MapPath("~/App_Data/words.txt"),System.Text.Encoding.Default);

28 Array.Sort(tempList, new CaseInsensitiveComparer());

29 AutoCompletewordList = tempList;

30 }

31 int index = Array.BinarySearch(AutoCompletewordList,prefixText,new CaseInsensitiveComparer());

32 if(index<0)

33 {

34 index=~index;

35 }

36 int matchedCount = 0;

37 for (matchedCount = 0; matchedCount < count&&matchedCount+index

38 {

39 if (!AutoCompletewordList[matchedCount + index].StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase))

40 {

41 break;

42 }

43 }

44 string[] returnValue = new string[matchedCount];

45 if (matchedCount > 0)

46 {

47 Array.Copy(AutoCompletewordList,index, returnValue,0, matchedCount);

48 }

49 return returnValue;

50 }

51

52}

53

54如果在app_data中的txt文件wors.txt。

此时,运行效果如下:

这个控件虽然好用易用,但是我思考却不应该滥用。比如在一个很多人并发填写表单的时候,这样每写几个字就调用一下Web Services,每次取回来的东西也不会太大,这对于网络服务来说,连接占用的时间过多,这严重偏离了网络服务大块头设计的原则。因此应用也要看下环境。

责任编辑:admin
相关文章