ajaxToolkit:AutoCompleteExtender 简单用法

ajaxToolkit 是微软官方的一个ajax控件包,  AutoCompleteExtender 就是其中之一. 需要引用ajaxToolkit.dll

达到的效果就是像baidu的输入查询条件带出提示的效果。

前台文本框:
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
这就是一个默认的文本框,不需要任何多余的设定.  然后定义一个AutoCompleteExtender,这里我们只设置了最基本的选项,其它的选项后面我会说明:
<ajaxToolkit:AutoCompleteExtender ID="ac1" runat="server" TargetControlID="txt1" ServicePath="webservice.asmx"  //  这边放的是webservice名字    ServiceMethod="GetTextList" MinimumPrefixLength="1" ></ajaxToolkit:AutoCompleteExtender>
这样,前台的工作就完成了。

后台要添加一个webservice服务。

 

namespace AJAXEnabledWebApplication3
{
    /// <summary>
    /// Summary description for AutoComplete
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    [ToolboxItem(false)]
    public class AutoComplete : System.Web.Services.WebService
    {
        public static string[] autoCompleteTextList = null;


        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string[] GetTextList(string prefixText,int count)
        {   ///检测参数是否为空
            if (string.IsNullOrEmpty(prefixText) == true || count <= 0) return null;
            if (autoCompleteTextList == null)
            {
                //获取data.txt文件的数据
                StreamReader reader = new StreamReader(Server.MapPath("data.txt"));
                //按行方式读取data.txt文件的数据
                ArrayList list = new ArrayList();
                string rowString = reader.ReadLine();
                while (rowString != null)
                {   ///读取一行
                    list.Add(rowString);
                    rowString = reader.ReadLine();
                }
                reader.Close();
                //将获取的内容保存到临时数组中
                string[] tempTextList = new string[list.Count];
                int i = 0;
                foreach (string s in list)
                {
                    tempTextList[i++] = s;
                }
                //对数组进行排序
                Array.Sort(tempTextList,new CaseInsensitiveComparer());
                autoCompleteTextList = tempTextList;
            }
            //定位二叉树搜索的起点
            int index = Array.BinarySearch(autoCompleteTextList,prefixText,new CaseInsensitiveComparer());
            if (index < 0)
            {
                //修正起点
                index = ~index;
            }
            //搜索符合条件的数据

            int matchCount = 0;
            for (matchCount = 0; matchCount < count && matchCount + index < autoCompleteTextList.Length; matchCount++)
            {
                //查看开头字符串相同的项
                if (autoCompleteTextList[index + matchCount].StartsWith(prefixText,StringComparison.CurrentCultureIgnoreCase) == false)
                { break; }
            }

            //处理搜索结果
            string[] matchResultList = new string[matchCount];
            if (matchCount > 0)
            {
                //复制搜索结果
                Array.Copy(autoCompleteTextList,index,matchResultList,matchCount);
            }
            return matchResultList;
        }
    }
}

 

这样就可以浏览效果了

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...