• 用户控件内实现文本框自动完成扩展


    在开发的站点中,想实现一个搜索功能。由于需要放在站点的头部,这样的话,每一个网页都可以使用这个搜索功能。
    开发设计,就把这个搜索功能独立出来,写成一个用户控件(ascx),然后拉至母版(MasterPage)上,文本框内有使用Ajax自动完成扩展功能。满怀信心完成...
    效果如下:

    在网页运行时,发现文本框的自动完成的功能无效果!更多的AutoComplete 的实现,可参考:http://www.cnblogs.com/insus/archive/2013/03/28/2986217.html 此实现只能在正常aspx网页正常运行。一旦移至用户控件之后,Autocomplete的功能,就随之消失。

     难道在用户控件不能使用Ajax的AutoCompleteExtender? 几经测试,有一次竟然成功了!成功的原因,原来WebMethod只能写在aspx.cs页面内:

    View Code
    [System.Web.Services.WebMethod]
            [System.Web.Script.Services.ScriptMethod]
            public static string[] GetDisplayUserName(string prefixText, int count)
            {
                ActiveDirectoryInfo objActiveDirectoryInfo = new ActiveDirectoryInfo();
    
                DataTable dt = objActiveDirectoryInfo.GetDisplayName(prefixText, count);
                ArrayList array = new ArrayList();
    
                foreach (DataRow dataRow in dt.Rows)
                {
                    array.Add(dataRow["displayName"].ToString());
                }
    
                return (string[])array.ToArray(typeof(string));
            }  


    由于网站很多网页,Insus.NET不可能在每一个aspx.cs 都复制与粘贴这段代码的。解决的方法,写一个BasePage.cs这个类继承System.Web.UI.Page

    public class BasePage : System.Web.UI.Page


    然后把上面的的webMethod方法代码写在这个BasePage内,站点的网页再继承这个BasePage类即可。

    其实,问题是因为没有使用Web Service导致的。如果把它改为Web service或Wcf service,一切都没有这样复杂。

  • 相关阅读:
    ubuntu下eclipse打开win下的代码中文出现乱码
    ubuntu设置ip和dns
    堆和栈的区别
    分析与利用
    C语言ASM汇编内嵌语法
    vnc无法显示桌面
    草稿本(1)总结
    系统虚拟化:原理与实现
    错误
    ab(http)与abs(https)压测工具
  • 原文地址:https://www.cnblogs.com/insus/p/2986989.html
Copyright © 2020-2023  润新知