微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;
        }
    }
}

 

这样就可以浏览效果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐