0

Telerik ReportViewer とボタンがあります。コードビハインドは次のとおりです。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ReportViewer1.Report = (Telerik.Reporting.Report)session["TelerikReportObject"];
            ReportViewer1.DataBind();
        }

    protected void ButtonKillThenNavigate_Click(object sender, EventArgs e)
    {
        // Here I need some mechanism to kill the Report (if it is still being generated) so I can immediately navigate to another page without a delay.
        // Now with my current code, a very noticeable delay exists before executing the redirection in the following line of code

        Response.Redirect("Home.aspx");
    }

レポートを強制終了する方法がない場合、非同期操作としてReportViewer1.Dispose()を呼び出すことはできますか? それができれば、レポートはいつでも破棄されますが、遅滞なくすぐに自分のページに移動できます。Response.Redirect("Home.aspx")

以下の画像を確認してください。

ここに画像の説明を入力

4

1 に答える 1

0

非常に単純なオプションの 1 つは、通常の html リンクをHome.aspxページに表示することです。これにより、ユーザーのブラウザーが Home.aspx に移動し、レポートを待っている接続を閉じます。レポートの生成はおそらくキャンセルされません (おそらく、終了するまで続行され、ページを処理するプロセスが閉じられます)。ただし、これにはユーザーの観点から必要な操作が含まれており、通常のレポートと同じようにリソースを浪費するだけです。

それ以外は、ReportViewer1.RefreshReportCommandコマンドを調べてください。私はここで推測していますが、ゼロ データで ReportViewer を再構成し、refresh メソッドを呼び出して、既存のプロセスをキャンセルし、ゼロ データ レポートを非常に迅速に生成して終了することができる場合があります

Telerik Reporting の経験が限られているため、ほとんどの場合、非同期操作用に設計されているとは思えません。

于 2012-11-15T19:16:18.107 に答える