J'ai un formulaire avec gridview qui est lié à une procédure stockée complexe (données financières). Cette requête prend environ 3 minutes pour s'exécuter et charger le gridview. Les utilisateurs s'impatientent et cliquent sur "Recherche" à plusieurs reprises, ce qui ne fait qu'empirer les choses. Comme une solution provisoire, je voudrais montrer une barre de progression, et j'ai trouvé une solution en utilisant le ASP.NET AJAX ModalPopupExtender.Comment puis-je afficher une boîte de dialogue modale pendant que la barre de données se produit?
C'est le code que j'ai pour ajouter l'extension à la page:
<ajaxToolkit:ModalPopupExtender ID="mdlPopup" runat="server" TargetControlID="Button1"
PopupControlID="pnlPopup" BackgroundCssClass="modalBackground" />
<asp:Panel ID="pnlPopup" runat="server" CssClass="updateProgress" style="display: none">
<div align="center" style="margin-top: 13px;">
<img src="../images/progress.gif" alt="Progress" />
<span class="updateProgressMessage">Loading ...</span>
</div>
</asp:Panel>
Ce code est très simple pour l'événement clic du bouton:
protected void Button1_Click(object sender, EventArgs e)
{
gvInvoice.DataBind();
}
Le problème est, quand je cliquez sur le bouton Rechercher, la boîte de dialogue modale apparaît mais la méthode Databind() n'est jamais appelée. J'ai essayé d'utiliser mdlPopup.Show()
mais cela ne montre pas la boîte de dialogue et exécute à la place le Databind()
.
Qu'est-ce qui me manque? Comment puis-je m'assurer que la boîte de dialogue modale apparaît, que la zone de données s'exécute et que la boîte de dialogue modale disparaît par la suite?