Почему AutoCompleteExtender не запускается? - PullRequest
1 голос
/ 20 апреля 2010

У меня проблема с элементом управления ASP AutoCompleteExtender. У меня есть один на моей странице, который работает нормально, но я поместил другой на той же странице, и я не могу заставить его работать. Используя HTTP Analyzer, запрос не запускается, когда я набираю текстовое поле, связанное с ним. У кого-нибудь есть идеи?

Оба вызывают один и тот же веб-сервис с другим параметром ContextKey. Веб-служба не может быть причиной, поскольку она работает в первом случае (DevMgrTxtBox), и даже не вызывается во втором (DevTxtBox). Свойства обоих элементов управления похожи, я просто изменил ID и targetControlID второго.

Код ниже находится в ContentPlaceHolder. Я использую VS2005 с .NET 2.0. AjaxControlToolkit.dll находится в версии 1.0.20229.0.

<ч /> РЕДАКТИРОВАТЬ: решение найдено. Идентификатор не единственная вещь, которая должна быть уникальной, свойство BehaviorID также должно быть уникальным. Который не был задокументирован.

<tr>
  <td>
    <asp:Label ID="DevtMgrLbl" runat="server" Text="Development Manager"></asp:Label>                    
  </td>
  <td>
    <asp:UpdatePanel runat="server" id="devMgrPanel">
      <contenttemplate>
        <asp:TextBox id="DevMgrTxtBox" runat="server"></asp:TextBox>
        <ajaxToolkit:AutoCompleteExtender id="AutoCompleteRole1" runat="server" CompletionSetCount="5" EnableCaching="true" BehaviorID="autoCompleteExtender" CompletionInterval="100" MinimumPrefixLength="2" ServiceMethod="GetRoleList" ServicePath="AutoCompleteRoles.asmx" TargetControlID="DevMgrTxtBox" ContextKey="DM">
        </ajaxToolkit:AutoCompleteExtender> 
      </contenttemplate>
      <triggers>
        <asp:AsyncPostBackTrigger ControlID="DevMgrTxtBox" EventName="TextChanged"></asp:AsyncPostBackTrigger>
      </triggers>
    </asp:UpdatePanel>                    
  </td>
</tr>
<tr>
  <td>
    <asp:Label ID="DevLbl" runat="server" Text="Developer"></asp:Label>
  </td>
  <td>
    <asp:UpdatePanel runat="server" id="devPanel">
      <contenttemplate>
        <asp:TextBox ID="DevTxtBox" runat="server"></asp:TextBox>
        <ajaxToolkit:AutoCompleteExtender id="AutoCompleteRole2" runat="server" CompletionSetCount="5" EnableCaching="true" BehaviorID="autoCompleteExtender" CompletionInterval="100" MinimumPrefixLength="2" ServiceMethod="GetRoleList" ServicePath="AutoCompleteRoles.asmx" TargetControlID="DevTxtBox" ContextKey="DEV">
    </ajaxToolkit:AutoCompleteExtender>
      </contenttemplate>
      <triggers>
        <asp:AsyncPostBackTrigger ControlID="DevTxtBox" EventName="TextChanged"></asp:AsyncPostBackTrigger>
      </triggers>
    </asp:UpdatePanel>                    
  </td>
</tr>
...