2010-09-08 2 views
2

Il est évident que le contrôle et l'extension se trouvent dans le même panneau de mise à jour. Pourtant, une erreur «Un extendeur ne peut pas être dans un autre UpdatePanel que le contrôle qu'il étend» se produit.ms ajax hover extender erreur "Un extendeur ne peut pas être dans un autre UpdatePanel que le contrôle qu'il étend"

REMARQUE: Le contrôle utilisateur est déclaré dans un UpdatePanel sur la page qui l'utilise. Cela rend le UpdatePanel dans le contrôle utilisateur "imbriqué".

Le code suivant est dans le Asp.Net UserControl:

 <asp:TemplateField HeaderStyle-Width="0px"> 
     <ItemTemplate> 
      <asp:UpdatePanel ID="hoverMenuUpdatePanel" runat="server"> 
       <ContentTemplate> 
        <ajaxtoolkit:HoverMenuExtender ID="extensionActionHoverMenuExtender" runat="server" 
         PopupControlID="extensionActionHoverMenu" PopupPosition="Left" HoverCssClass="popupHover" 
         TargetControlID="extensionActionHoverMenu" OffsetX="5" PopDelay="50" /> 
        <asp:Panel ID="extensionActionHoverMenu" runat="server" CssClass="modalDialogPanel" 
         Style="display: none; height: 200px; width: 300px; padding: 5px;"> 
         <div style="border-color: #3A362C; padding: 2px; border-right-style: solid; border-right-width: thin; 
          float: left;"> 
          <div class="title"> 
           Reserve Extension: &nbsp 
           <asp:Label ID="extensionToReserveLabel" runat="server" Text='<%# Eval("ConsolidatedPhoneExtensionPK") %>' /> 
          </div> 
          <div id="userType" style="border-style: solid; border-width: 1px; padding: 5px; height: 80px; 
           width: 200px; background-color: #E2DDBA; margin-bottom: 8px;"> 
           User Type: 
           <asp:RadioButtonList ID="reservedUserTypeRadioButtonList" runat="server"> 
            <asp:ListItem Selected="true" Text="999/988" Value="Employee" /> 
            <asp:ListItem Text="Other" Value="Other" /> 
           </asp:RadioButtonList> 
          </div> 
          <div> 
           Employee No:<asp:TextBox ID="reserveEmployeeNo" runat="server" OnTextChanged="reserveEmployeeNo_TextChanged" 
            AutoPostBack="true" /> 
           <asp:Label ID="employeeNameDisplayLabel" runat="server" /> 
           <asp:Label ID="reserveUserMessageAreaLabel" runat="server" /> 
          </div> 
         </div> 
         <div> 
          <div> 
           <asp:Button ID="selectButton" runat="server" Text="View" CommandName="Select" Width="75px" /> 
          </div> 
          <div> 
           <asp:Button ID="reserveButton" runat="server" Text="Reserve" CommandName="Reserve" 
            CommandArgument='<%# Eval("ConsolidatedPhoneExtensionPK") %>' Width="75px" /> 
          </div> 
         </div> 
        </asp:Panel> 
       </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="reserveEmployeeNo" EventName="TextChanged" /> 
       </Triggers> 
      </asp:UpdatePanel> 
     </ItemTemplate> 
    </asp:TemplateField> 

Répondre

0

PopupControlID et TargetControlID sont les mêmes. Votre TargetControlID devrait être un autre élément de formulaire.

HoverMenu Sample:

  • TargetControlID - Le contrôle que l'extension cible. Lorsque le curseur de la souris est sur ce contrôle, le menu contextuel du survol sera affiché.
  • PopupControlID - ID du contrôle à afficher lorsque la souris est sur le contrôle cible. Dans ce cas, il est juste un simple panneau avec deux liens:
1

Créer un panneau avec un ID de « pop-up » (il peut être anthing vous aimez bien). Dans ce panneau, placez les boutons ou ce que vous voulez, ce sera votre menu contextuel. Définissez votre PopupControlID sur "popup".

Votre TargetControlID doit être l'ID du panneau dans lequel vous souhaitez que le menu apparaisse (extensionActionHoverMenu?).

0

Parfois, il ne s'agit pas du panneau de mise à jour mais d'autres éléments de la boîte à outils. J'ai reçu ce message lors de l'utilisation de FilteredTextBoxExtender. Le contrôle défini dans le TargetControlID se trouvait dans un autre panneau de mise à jour.

Questions connexes