更新进度不起作用

UpdateProgress not working

我有一个 UpdateProgress 我正在尝试显示一个 loading gif 而 post 返回
但是当我点击按钮时这段代码不起作用。

此代码没有任何反应,也没有 post 单击按钮返回。

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DynamicLayout="true">
    <ProgressTemplate>
        <asp:Image ID="ImageWait" runat="server" ImageUrl="../images/wait.gif" />
    </ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
       <asp:Button ID="ButtonSave" runat="server" Text="Save" OnClick="ButtonSave_Click" ValidationGroup="Valid1" />
    </ContentTemplate>
</asp:UpdatePanel>   

protected void ButtonSave_Click(object sender, EventArgs e)
{
    // Some code
}

我该如何解决这个问题?

  • 将 UpdatePanel 的 UpdateMode 设置为条件
  • 手动将 AsyncPostBackTrigger 触发到 UpdatePanel 中的控件,并提供将触发的 ControlID 和 EventName:

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
        </ContentTemplate>
            <asp:Button ID="ButtonSave" runat="server" Text="Save" 
                OnClick="ButtonSave_Click" />
        </ContentTemplate>
        <Triggers>   
            <asp:AsyncPostBackTrigger ControlID="ButtonSave" 
                EventName="Click" />
         </Triggers>
    </asp:UpdatePanel>
    

  • 将关联的 UpdatePanel 的 ID 提供给 UpdateProgress:

    <asp:UpdateProgress ID="UpdateProgress1" runat="server" 
        AssociatedUpdatePanelID="UpdatePanel1">
    
  • 您可以使用 System.Threading.Thread.Sleep(3000);:

    测试其在事件中的工作情况
    protected void ButtonSave_Click(object sender, EventArgs e)
    {
        // delay it for 3 milliseconds
        System.Threading.Thread.Sleep(3000);
    
       //... Here will be your logic
    }
    

默认(在 UpdateProgress 控件中未设置值时)

DisplayAfter="500" 

如果您的回传是 "too fast",UpdateProgress 将不会显示... 尝试将其设置为:

DisplayAfter="1" 

检查它是否正常工作,然后设置您想要的值