在用户控件中使用AutoCompleteExtender控件,来实现类似类似于google搜索工具的自动完成功能。在用户控件topbar中定义了
1)搜索关键字输入匡
<input onclick="this.value == '搜索 24doings.com' ? this.value = '' : true" size="18" value="搜索 24doings.com" id="key" autocomplete="off" onkeyup="beKeyUp();"/>
2)AutoCompleteExtender 控件
         <cc2:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            ServiceMethod="GetCompleteList" 
            ServicePath="../WebService/AutoCompleteSuggestDoings.asmx" 
            Enabled="true" 
            MinimumPrefixLength="2" 
            CompletionSetCount="10"
            TargetControlID=key>
          </cc2:AutoCompleteExtender>
问题:
    页面运行时提示key的控件找不到:The TargetControlID of 'AutoCompleteExtender1' is not valid. A control with ID 'key' could not be found.
    原因应该是用户控件在页面动态生成类似于“XXX_key”的标识,导致无法识别。
    但控件中又不能使用<%=key.UsersID%>的方式来获取控件标识。
    请问怎么样才可以在用户控件里面使用这个AutoCompleteExtender控件?

解决方案 »

  1.   

    AutoCompleteExtender似乎只认识<asp:TextBox控件,还是改用<asp:TextBox吧。
      

  2.   

    即使换成<asp:TextBox > 问题依然,应该是用户控件中动态生成id作怪,导致AutoCompleteExtender认不到TextBox  
    呜呜 请大家帮帮忙啦
      

  3.   

    <input onclick="this.value == '搜索 24doings.com' ? this.value = '' : true" size="18" value="搜索 24doings.com" id="key" autocomplete="off" onkeyup="beKeyUp();" runat="server" /> 
      

  4.   

    多谢belldandy11 ! 增加runat属性后问题解决了。
    接下来还有一个问题,想继续请教:编译时有错误提示:元素“ScriptManager”不是已知元素。原因可能是网站中存在编译错误。
    我下载AjaxControlToolkit范例来编译,也会提示这个错误,不过AjaxControlToolkit可以编译通过。但是我的项目不能编译通过,调用此用户控件的页面会提示:未知的服务器标记“uc1:TopBar”。另查网上资料说只要在页面上加上<%@ Assembly Name="System.Web.Extensions" %>即可解决此问题,我在用户控件和调用此用户控件的页面都加上了这脚本都不能起效果。烦请再帮忙,感谢! 感谢!
    代码如下:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TopBar.ascx.cs" Inherits="Control_TopBar" %>
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    <%@ Register Assembly="Doings.OnlineUser" Namespace="Doings.OnlineUser" TagPrefix="cc1" %> 
    <%@ Assembly Name="System.Web.Extensions" %>
    <cc1:Script ID="Script1" runat="server">
        <div id="topbar">
          <div class="logo"> <a href="/Doings.Web/"><!-- 24doings logo --></a> </div>
          <div class="main-link">
             
             
              <a href="/Doings.Web/">首页</a>| <a href="/Doings.Web/Community/">社区</a>|
    <%
    if (usersDto == null)
    {
    %>
          <a href="/Doings.Web/account/login.aspx">登陆/注册</a>
    <%
    }
    else
    {
    %>
            <a href="/Doings.Web/person/?ui=<%=usersDto.UsersID%>">我的<%=usersDto.DoNumber%>件事</a>| <a href="/Doings.Web/account/logout.aspx?ul=<%=ul%>">注销登录</a>
    <%
    }
    %>
          </div>
        
          <form action="/Doings.Web/search.aspx" method="get">
          <div class="main-search">
            <label><input onclick="this.value == '搜索 24doings.com' ? this.value = '' : true" size="18" value="搜索 24doings.com" id="key" autocomplete="off" onkeyup="beKeyUp();" runat="server"/></label>
               <asp:ScriptManager runat="server" />
               <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
                ServiceMethod="GetCompleteList" 
                ServicePath="../WebService/AutoCompleteSuggestDoings.asmx" 
                Enabled="true" 
                MinimumPrefixLength="2" 
                CompletionSetCount="10"
                TargetControlID="key">
              </ajaxToolkit:AutoCompleteExtender>
          </div>
          
      <div id="search_suggest" style="Z-INDEX:101;POSITION:absolute"></div>

          
          <div class="main-search-submit"><input type="image" alt="搜索" src="/Doings.Web/style/images/top-search-go.png" /></div>
          <div class="topbar-right">&nbsp;</div>
          </form>
        </div>
           
           
           
           </cc1:Script>
           
         
      

  5.   

    我也遇到这个问题,调试的时候根本就不跳到Web服务页面去,感觉还是没有识别textbox