zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,asp.net Ajax AutoComplete控件使用 狼人:

     简介:
        AutoComplete控件就是在用户在文本框输入前几个字母或是汉字的时候,该控件就能从存放数据的文或是数据库里将所有以这些字母开头的数据提示给用户,供用户选择,提供方便.

     重要属性:
        1、TargetControlID:指定要实现提示功能的控件。
        2、ServicePath:WebService的路径,提取数据的方法是写在一个WebService中的。
        3、ServeiceMethod:写在WebService中的用于提取数据的方法的名字。
        4、MinimumPrefixLength:用来设置用户输入多少字母才出现提示效果。
        5、CompletionSetCount:设置提示数据的行数。
        6、CompletionInterval:从服务器获取书的时间间隔,单位是毫秒。
    示例
    打开vs2005创建一个AjaxControlToolKit网站。
    在网站的App_Data文件夹下添加文本文件TextFile.txt,并在其中添加数据,如下

    1 oec2003
    2 oec2004
    3 oec2005
    4 oec2006
    5 oec2007

       在网站的根目录下添加一个Web服务,命名为oec2003_AutoComplete,系统自动将Web服务两个部分,设计部分oec2003_AutoComplete.asmx和代码部分oec2003_AutoComplete.cs,其中oec2003_AutoComplete.cs文件自动放入到App_Code目录下。打开oec2003_AutoComplete.cs文件,添加获取数据的方法GetCompleteList,代码如下:

     1using System;
     2using System.Web;
     3using System.Collections;
     4using System.Web.Services;
     5using System.Web.Services.Protocols;
     6using System.IO;
     7
     8
     9/// <summary>
    10/// AutoComplete 的摘要说明
    11/// </summary>

    12[WebService(Namespace = "http://tempuri.org/")]
    13[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    14[System.Web.Script.Services.ScriptService]
    15public class AutoComplete : System.Web.Services.WebService {
    16
    17    public AutoComplete () {
    18
    19        //如果使用设计的组件,请取消注释以下行 
    20        //InitializeComponent(); 
    21    }

    22
    23    [WebMethod]
    24    public string HelloWorld() {
    25        return "Hello World";
    26    }

    27    /// <summary>
    28    /// 获取数据的方法GetCompleteList
    29    /// </summary>

    30    //定义静态数组用于保存获取的数据
    31    private static string[] autoCompleteWordList = null;
    32    [WebMethod]
    33    public String[] GetCompleteList(string prefixText, int count)
    34    {
    35        if (autoCompleteWordList == null)
    36        {
    37            string[] temp = File.ReadAllLines(Server.MapPath("~/App_Data/TextFile.txt"));
    38            Array.Sort(temp, new CaseInsensitiveComparer());
    39            autoCompleteWordList = temp;
    40        }

    41
    42        int index = Array.BinarySearch(autoCompleteWordList, prefixText, new CaseInsensitiveComparer());
    43        if (index < 0)
    44        {
    45            index = ~index;
    46        }

    47
    48        int matchingCount;
    49        for (matchingCount = 0; matchingCount < count && index + matchingCount < autoCompleteWordList.Length; matchingCount++)
    50        {
    51            if (!autoCompleteWordList[index + matchingCount].StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase))
    52            {
    53                break;
    54            }

    55        }

    56        String[] returnValue = new string[matchingCount];
    57        if (matchingCount > 0)
    58        {
    59            Array.Copy(autoCompleteWordList, index, returnValue, 0, matchingCount);
    60        }

    61        return returnValue;
    62    }

    63
    64}

    由于在上面的代码中使用了File类,所以应该添加如下代码:

    using System.IO;

     因为需要在客户端调用Web服务,还需要添加如下代码

    [System.Web.Script.Services.ScriptService]

    保存Web 服务的代码
     打开根目录下默认生成的Default.aspx
    在页面中拖拽一个TextBox控件和一个AutoCompleteExtender控件。
    在属性窗口设置AutoCompleteExtender控件的属性,如下

    <ajaxToolkit:AutoCompleteExtender 
                ID
    ="AutoCompleteExtender1" 
                runat
    ="server" 
                ServiceMethod
    ="GetCompleteList" 
                ServicePath
    ="oec2003_AutoComplete.asmx" 
                Enabled
    ="true" 
                MinimumPrefixLength
    ="2" 
                   CompletionSetCount="10"
                TargetControlID
    ="TextBox1">
    </ajaxToolkit:AutoCompleteExtender>

    在Web服务中的count参数的值是取CompletionSetCount属性的值。
    保存设计的页面,将默认页面设置为起始页,按F5运行后在文本框中输入oe,就能看到想要的结果。

    代码下载

  • 相关阅读:
    去除百度搜索结果中的广告的 js 代码
    js获取url参数
    奇淫技巧
    js生成hash序列
    Maven中可以被继承的POM元素
    多线程
    IO在Socket中的应用
    关于IO的整理
    finalize方法的使用
    复合赋值和简单复制的区别
  • 原文地址:https://www.cnblogs.com/waw/p/2162696.html
Copyright © 2011-2022 走看看