加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

atlas学习系列之二

发布时间:2020-12-17 02:48:59 所属栏目:安全 来源:网络整理
导读:原来做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

< div >
?2

????
< asp:Panel? ID ="Panel1" ?runat ="server" ?Height ="125px" ?Width ="125px" >
?3

????
</ asp:Panel >
?4

????
< asp:TextBox? ID ="TextBox1" ?runat ="server" ></ asp:TextBox >< asp:DropDownList? ID ="DropDownList2"
?5

????????runat
="server" >
?6

????
</ asp:DropDownList >
?7

????
< atlas:AutoCompleteExtender? ID ="AutoCompleteExetender1" ?runat ="server" ??DropDownPanelID ="Panel1" >
?8

????
< atlas:AutoCompleteProperties?? TargetControlID ="TextBox1" ?Enabled ="true" ?ServicePath ="WebService.asmx" ?ServiceMethod ="GetWordList" ??MinimumPrefixLength ="1" ? />
?9

????
</ atlas:AutoCompleteExtender >
10

????
</ div >

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

using ?System;
?2

using ?System.Web;
?3

using ?System.Collections;
?4

using ?System.Web.Services;
?5

using ?System.Web.Services.Protocols;
?6

using ?System.IO;
?7


?8


?9

///?<summary>
10

///?WebService?的摘要说明
11

///?</summary>

12

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

[WebServiceBinding(ConformsTo?
= ?WsiProfiles.BasicProfile1_1)]
14

public ? 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<AutoCompleteWordList.Length;?matchedCount++)
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,每次取回来的东西也不会太大,这对于网络服务来说,连接占用的时间过多,这严重偏离了网络服务大块头设计的原则。因此应用也要看下环境。?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读