Ich hatte auch mit dem gleichen Problem zu kämpfen und hatte das Glück, über die UpdateProgress Control Overview on MSDN stolpern. Ein Beispiel auf dieser Seite zeigt secret Javascript zum Einbinden in die asynchronen Ajaxaufrufe des ASP UpdatePanel-Steuerelements. Mit ein wenig Modifikation konnte ich die jQuery BlockUI plugin mit einem ASP UpdatePanel arbeiten.
Hier ist, was ich endete. Es sollte hier genug sein, damit Sie alles tun können, was Sie möchten, wenn der asynchrone Rückruf beginnt und wenn er endet.
HTML
<asp:UpdateProgress runat="server" id="updateProgress1" AssociatedUpdatePanelID="UpdatePanel1" DynamicLayout="false" DisplayAfter="0">
<ProgressTemplate>Processing...</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- Some stuff here -->
</ContentTemplate>
</asp:UpdatePanel>
JAVASCRIPT
$(document).ready(function() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args) {
// Whatever you want to happen when the async callback starts
$.blockUI();
}
function EndRequest(sender, args) {
// Whatever you want to happen when async callback ends
$.unblockUI();
}
});
Beachten Sie, dass ich eine ASP-Update Kontrolle eingeschlossen, das ist wichtig, denn wenn Sie das nicht haben, wird die Javascript nicht richtig funktionieren. Es blockiert und entsperrt die Benutzeroberfläche, aber der Blockierungsteil wird nicht ausgeführt, wenn der Rückruf zurückkehrt. Dies geschieht fast unmittelbar nachdem der Async-Aufruf gestartet wurde.