2

背景: 我在单击按钮时有一个长时间运行的查询。因此,调用 updateprogress 来通知用户进程正在进行中。目前它正在显示静态数据,即标签。

当执行长时间运行的进程时,udapteprogress 的预期内容会出现在前台并冻结剩余的内容。ie正在生成报告,请不要关闭窗口

现在我们想显示完成百分比,即 xx%(例如:10%),而 updateprogress 的内容在前台

代码: 更新进度

<asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
                <div id="progress">
                    <asp:Label ID="lblProgress" Text="Report generation is in progress, Please do not close the window" runat="server"></asp:Label>
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress> 

带按钮的更新面板

<asp:UpdatePanel ID="upExport" UpdateMode="Always" runat="server"> 
                                    <ContentTemplate> 
                                        <asp:Button ID="btnExport" runat="server" Text="Export"
                                            OnClick="btnExport_Click" /> 
                                    </ContentTemplate> 
                                    <Triggers> 
                                        <asp:AsyncPostBackTrigger ControlID="btnExport" EventName="Click"/> 
                                    </Triggers> 
                                </asp:UpdatePanel>

服务器端功能:

    protected void btnExport_Click(object sender, EventArgs e) 
    { 
    //long running method
}

PS:当进程正在执行 btnExport_Click 并且 updateprogress 在前台时,我希望它显示完成百分比。

在我失败的尝试中,我尝试在“btnExport_Click”方法中更新会话变量并通过 javascript 访问它但不成功

更新 1: 我想知道一种方式,当我仍在长时间运行的方法中时,我可以传达 % 值,因为一旦控制退出长时间运行的方法。这将是 100% 完成,并且 updateprogress 将不再处于前台。

谢谢你的时间:)

4

0 回答 0