我试过实现这个例子,但进度永远不会显示。我的页面不包含任何 UpdatePanel 或任何内容,这可能是为什么?
在我的页面声明中,我添加了:
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
在我添加的 head 元素内:
<script src="Scripts/jsUpdateProgress.js" type="text/javascript"></script>
在我的表单标签中,我立即添加了:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Panel ID="panelUpdateProgress" runat="server" CssClass="updateProgress">
<asp:UpdateProgress runat="server" ID="UpdateProg1" DisplayAfter="0">
<ProgressTemplate>
<div style="position:relative; top:30%; text-align: center;">
<img src="Processing.gif" style="vertical-align: middle" alt="Processing"/>
Processing...
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender runat="server" ID="ModalProgress" TargetControlID="panelUpdateProgress" BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress"/>
紧随我添加的结束表单标签:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);
var ModelProgress = '<%= ModalProgress.ClientID %>';
function beginReq(sender, args) {
$find(ModalProgress).show();
}
function endReq(sender, args) {
$find(ModalProgress).hide();
}
</script>
我希望使进度显示的按钮:
<asp:Button runat="server" ID="submit" CssClass="multiViewTab" Text="Submit"/>
该按钮肯定会发回,因为在我的表单标签中我有:
onsubmit="return validateForm()"
并且 validateForm 运行。如果表单有效,validateForm 还会启动 submitForm 函数,其中包含对 AJAX 调用 Web 服务的 JQuery 调用。
取2:
更简单和纯粹的 AJAX,但仍然不起作用。
</form>
<script type='javascript'>
$(document).ready(function() {
$('body').append('<div id="ajaxBusy"><p><img src="Processing.gif"></p></div>');
$('#ajaxBusy').css("updateProgress");
});
$(document).ajaxStart(function () {
$('#ajaxBusy').css("z-index", 2);
}).ajaxStop(function () {
$('#ajaxBusy').css("z-index", -1);
});
我使用 z-index 是因为我有一个临时的“向导”,它本质上使用 z-index 显示/隐藏 div,如果我不更改 z-index,进度 div 将不会显示。