我有一个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")
一起作为异步操作来呼叫?如果我能做到这一点,我将能够立即导航到我的页面,而报告将随时处理。
检查下图:
答案 0 :(得分:0)
一个非常简单的选项可能是在页面上只有一个普通的html链接Home.aspx
。这应该将用户的浏览器带到Home.aspx并关闭其等待报告的连接。它可能不会取消报告生成(可能会一直持续到完成,然后关闭处理页面的过程)。但是从用户的角度来看,这有你想要的操作,只要普通的报告可以浪费资源。
除此之外,请查看ReportViewer1.RefreshReportCommand
命令。我在这里猜测,但是您可以使用零数据重新配置ReportViewer,然后调用可能取消现有流程并快速生成零数据报告的刷新方法,然后完成。
由于我在Telerik报告方面的经验有限,我认为他们不会将其设计为大部分的异步操作。