UpdateProgress 未出现在第二次单击同一按钮时

UpdateProgress not appearing on second click of same button

UpdateProgress 第一次出现,当我点击 btnSubmit 按钮时。但是当我下次单击相同的按钮时,UpdateProgress 没有出现。但所有其他事情都运作良好。我正在使用此 UpdateProgress 在向客户端发送电子邮件时显示 GIF 图像。对于第一个客户端 UpdateProgress 出现,但对于其他 'n' UpdateProgress 没有出现。请帮助我在 Stack Overflow 中第二次问这个问题

下面的代码显示了我的更新进度

 <asp:UpdatePanel ID="up1" runat="server">
        <ContentTemplate>
            <asp:UpdateProgress ID="updProgress"
                runat="server">
                <ProgressTemplate>
                    <div class="modal">
                        <div class="center">
                            <span style="padding-left: 10px"><b>Please Wait..</b></span>
                            <img alt="" src="../images/Preloader_3.gif" width="50" height="50" />
                        </div>
                    </div>
                </ProgressTemplate>
            </asp:UpdateProgress>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

下面的代码显示了触发 UpdateProgress 的按钮

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
    </Triggers>
    <ContentTemplate>
    <div class="form-group row">
        <div class="col-sm-6">
            <div class="col-sm-6">
                <asp:Button ID="btnSubmit" OnClick="btnSubmit_Click"
                    OnClientClick="javascript:return btnSubmit();" CssClass="btn btn-primary"
                    runat="server" Text="Submit" />
                <a href="assignment.aspx?sid=<%=Request.QueryString["sid"] %>" class="btn btn-default">Cancel</a>
            </div>
        </div>
    </div>
    </ContentTemplate>
    </asp:UpdatePanel>

CS 背后的代码

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        updProgress.Visible = true;
        SendEmail(Convert.ToInt32(drpDiv.Text));
        updProgress.Visible = false;
    }

您必须将您的更新进度放在更新面板之外,并与更新进度相关联。您可以创建另一个更新面板来触发您的按钮,自动 post 返回 true。

<asp:UpdateProgress ID="UpdateProgress1" runat="server" 
                    AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
    <!-- Place your Message here -->
</ProgressTemplate>
</asp:UpdateProgress>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnSubmit" OnClick="btnSubmit_Click" runat="server" 
                    AutoPostBack="true" />
    </ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
    <!-- You can put some controls here -->
</ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

或者,第二种方法是:

<asp:UpdateProgress ID="UpdateProgress1" runat="server" 
                    AssociatedUpdatePanelID="UpdatePanel1">
    <ProgressTemplate>
        <!-- Place your Message here -->
    </ProgressTemplate>
</asp:UpdateProgress>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnSubmit" OnClick="btnSubmit_Click" runat="server" 
                    AutoPostBack="true" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>