Как убить / остановить отчет Telerik во время его создания
У меня есть 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")
как асинхронная операция? Если я смогу это сделать, я смогу сразу перейти на мою страницу без промедления, пока отчет будет удаляться, когда он захочет.
Проверьте изображение ниже:
1 ответ
Один очень простой вариант может быть просто иметь нормальную ссылку на HTML Home.aspx
на странице. Это должно привести браузер пользователя к Home.aspx и закрыть его подключение в ожидании отчета. Вероятно, он не отменит генерацию отчета (который, вероятно, продолжится до завершения, а затем закроет процесс обработки страницы). Но это имеет ту операцию, которую вы хотели бы видеть с точки зрения пользователя, и тратит ресурсы только так долго, как обычный отчет.
Кроме этого, посмотрите в ReportViewer1.RefreshReportCommand
команда. Я предполагаю, что здесь, но вы можете перенастроить ReportViewer с нулевыми данными, затем вызвать метод обновления, который может отменить существующий процесс и очень быстро сгенерировать отчет с нулевыми данными, а затем закончить.
С моим ограниченным опытом работы с Telerik Reporting я не верю, что они по большей части рассчитаны на асинхронные операции.