Как убить / остановить отчет 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 я не верю, что они по большей части рассчитаны на асинхронные операции.

Другие вопросы по тегам