Fermer manuellement un PopupControlExtender
Le contrôle PopupControl des Ajax Toolkits permet d'afficher une bulle d'information suite à une action sur un contrôle serveur, comme un click sur un linkbutton ou sur une textbox.
Par exemple pour afficher un bulle d'info sur le click d'un lien on utilise :
<asp:LinkButton ID="lbl1" runat="server" OnClientClick="return false;">aide</asp:LinkButton>
<asp:Panel ID="pnl1" runat="server"
style="border:solid 1px #000; background-color:#939;display:none;width:200px;height:50px;">
du blabla
</asp:Panel>
<ajaxToolkit:PopupControlExtender ID="popupExt" runat="server" PopupControlID="pnl1"
TargetControlID="lbl1" Position="Bottom" />
Maintenant que l'on a réussi à afficher notre popup juste en dessous du linkbutton, comment faire pour la cacher ? Par défaut si vous cliquez à l'extérieur de la popup, celle-ci va se cacher, mais ce n'est pas très intuitif.
Côté serveur les méthodes Cancel et Commit permettent de cacher le popup, mais cela nécessite un aller-retour serveur ce qui est lourd pour seulement cacher ce popup.
Côté client, il existe deux méthodes (non documentés) qui permettent d'afficher ou masquer le popup : showPopup et hidePopup. On applique ces méthodes sur l'instance client du PopupControlExtender que l'on récupère à partir de la méthode $find.
<asp:LinkButton ID="lbl1" runat="server" OnClientClick="return false;">aide</asp:LinkButton>
<asp:Panel ID="pnl1" runat="server"
style="border:solid 1px #000; background-color:#939;display:none;width:200px;height:50px;">
<a href="#" onclick="$find('<%=popupExt.ClientID%>').hidePopup()">[Fermer]</a>
du blabla
</asp:Panel>
<ajaxToolkit:PopupControlExtender ID="popupExt" runat="server" PopupControlID="pnl1"
TargetControlID="lbl1" Position="Bottom" />