情况是这样的: 页面上放了一个updatepanel, 一个updateprogress,一个button(在updatepanel外面),并且设置了updatepanel的触发器为button. 点击button后,我sleep 3s ,人为造成延迟,但是updateprogress里的内容就是不显示。
网上查的是说button 一定要在updatepanel内才会显示.我按照查到的方法加了如下代码:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
var postBackElement;
function InitializeRequest(sender, args) {
if (prm.get_isInAsyncPostBack())
args.set_cancel(true);
postBackElement = args.get_postBackElement();
if (postBackElement.id == 'btnSearch')
$get('UpdateProgress1').style.display = 'block';
}
function EndRequest(sender, args) {
if (postBackElement.id == 'btnSearch')
$get('UpdateProgress1').style.display = 'none';
}
但是还是不行。请大家帮忙。谢谢。
你先用下面简单的代码试一下,要注意的就是引发更新的控件必须在UpdatePanel内,不然不会显示。
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdateProgress ID="updateprogress" runat="server" AssociatedUpdatePanelID="UpdataPanel1">
<ProgressTemplate><div>loading....</div></ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdataPanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="LabTimeIN" runat="server"></asp:Label>
<asp:Button ID="BtnIN" Text="内部" runat="server" OnClick="btn_Click" />
</ContentTemplate>
<Triggers><asp:AsyncPostBackTrigger ControlID="BtnOUT"/></Triggers>
</asp:UpdatePanel> <br/>
<asp:Label ID="LabTimeOUT" runat="server"></asp:Label>
<asp:Button ID="BtnOUT" Text="外部刷新" runat="server" OnClick="btn_Click" />(不管用,因为在外部)
</form>