【问题标题】:UpdateProgress not working for button which is in inside of trigger propertyUpdateProgress 不适用于触发器属性内部的按钮
【发布时间】:2025-12-06 18:15:02
【问题描述】:
     <asp:UpdatePanel ID="Upnl1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
      <table width="100%"><tr>
                            <td align="center" colspan="3">
                                <asp:Button ID="btnShowReport" runat="server" CssClass="ButtonClassLong" SkinID="LargeButton"
                                    Text="Show Report" OnClick="btnShowReport_Click"   TabIndex="15" />
                                <asp:Button ID="btnClear" runat="server" CssClass="ButtonClass" Text="Clear" OnClick="btn_Click"
                                    TabIndex="16" />
                                <asp:Button ID="btnClose" runat="server" CssClass="ButtonClass" OnClick="btnClose_Click"
                                    Text="Close" CausesValidation="False" TabIndex="17" />
                                <asp:CheckBox ID="ChkPrint" Text="Print View" runat="server" TabIndex="14" />
                            </td>
                        </tr>
                    </table></ContentTemplate>
<Triggers>
     <asp:PostBackTrigger ControlID="btnShowReport" />
</Triggers></asp:UpdatePanel><asp:UpdateProgress ID="UpdateProgress" runat="server">
            <ProgressTemplate>
                <asp:Image ID="Image1" ImageUrl="~/App_Themes/RIBO/Images/Progress.gif" AlternateText="Processing"
                    runat="server" />
            </ProgressTemplate>
        </asp:UpdateProgress>

这是我的编码,我的问题是当我单击清除按钮时更新进度运行良好,当我单击 btnShowReport 时它不会工作。

如何显示触发属性内的按钮点击事件的更新进度。

【问题讨论】:

  • 你需要在btnShowReport点击上同步回发什么?
  • 我想要,如果我点击 btnShowReport,UpdateProgress 将显示...

标签: asp.net updatepanel updateprogress


【解决方案1】:

问题是 AssociatedUpdatePanelID 。您尚未设置“UpdateProgress”的 Associateid

设置为UpdateProgress

<asp:UpdateProgress ID="UpdateProgress" runat="server"  AssociatedUpdatePanelID="Upnl1">

根据MSDN

UpdateProgress 控件呈现显示或隐藏的元素 取决于关联的 UpdatePanel 控件是否导致 异步回发。用于初始页面渲染和同步 回发,UpdateProgress 控件不显示。

编辑

原因是&lt;asp:PostBackTrigger ControlID="btnShowReport" /&gt;

这将导致整页回发。您应该将Trigger 更改为

<asp:AsyncPostBackTrigger ControlID="btnShowReport" />

它会为你完成这项工作......如果你能阅读引用的陈述,你也可以自己解决它......

【讨论】:

  • 我设置了属性 AssociatedUpdatePanelID="Upnl1" 但它不起作用(更新进度不显示)....
  • 如果我使用async 在前端选择的任何内容(文件上传控制文件名)都不会发送到代码隐藏...
  • @Si8 请检查此链接,如果这没有帮助请告诉我pumexintellecto.wordpress.com/2013/08/07/…
  • 我刚刚做了一些研究,不幸的是,文件上传需要完整的回发。谢谢你的帮助:)
【解决方案2】:

This is working for me, I hope this will helpful for some

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Show Loading Image while uploading images using updatepanel</title>
<style type="text/css">
.overlay
{
position: fixed;
z-index: 999;
height: 100%;
width: 100%;
top: 0;
background-color: Black;
filter: alpha(opacity=60);
opacity: 0.6;
-moz-opacity: 0.8;
}
</style>
<script type="text/javascript">
function showProgress() {
var updateProgress = $get("<%= UpdateProgress.ClientID %>");
updateProgress.style.display = "block";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scriptmanager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="updatepanel1" UpdateMode="Conditional">
<ContentTemplate>
<div style="align:center; margin-left:350px; margin-top:200px">
<asp:FileUpload ID="uploadfiles1" runat="server" />
<asp:Button ID="btnUpload" Text="Upload" runat="server" onclick="btnUpload_Click" OnClientClick="showProgress()" /><br />
<asp:Label ID="lblMsg" runat="server"/>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress" runat="server" AssociatedUpdatePanelID="updatepanel1">
<ProgressTemplate>
<div class="overlay">
<div style=" z-index: 1000; margin-left: 350px;margin-top:200px;opacity: 1;-moz-opacity: 1;">
<img alt="" src="loading.gif" />
</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</form>
</body>
</html>

【讨论】:

  • 对于后代,您能否在您的答案中包含您认为有用的链接的相关部分?这样,如果链接断开、更改等,您的答案不会变得无用。非常感谢。