2

背景: ボタンのクリックで実行時間の長いクエリがあります。したがって、 updateprogress が呼び出されて、プロセスが進行中であることがユーザーに通知されます。現在、静的データ、つまりラベルを表示しています。

長期実行プロセスが実行されると、予想どおり、udapteprogress のコンテンツがフォアグラウンドに表示され、残りのコンテンツがフリーズします。つまり、レポートの生成が進行中です。ウィンドウを閉じないでください

updateprogress のコンテンツがフォアグラウンドにあるときに、完了率、つまり 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: 長期実行メソッドにいる間に % 値を通信できる方法を知りたいのですが、長期実行メソッドから制御が終了すると、Coz が実行されます。100% 完了し、updateprogress はフォアグラウンドではなくなります。

御時間ありがとうございます:)

4

0 に答える 0