Постбэк после загрузки файла не работает - PullRequest
0 голосов
/ 29 мая 2018

На моей странице есть всплывающее окно.Кнопка всплывающего окна генерирует и загружает файл Aspose Excel.(На странице также есть настройки Ajax)

Теперь после загрузки файла моя кнопка отключена, и на странице ничего не работает, если я не обновляю ее вручную.

Всплывающее окно на странице

<div class="modal hide" id="AwaitPracSignoffReportModal">
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h3>
            <asp:Label runat="server" ID="lblPopupHeading" Text="Awaiting Practice Sign-off Report" /></h3>
    </div>
   <!-- Other asp controls in popup-->

    <div class="modal-footer" style="margin-bottom: 5px">
        <button class="btn" data-dismiss="modal">
            Cancel</button>
        <asp:Button runat="server" ID="btnGenerateReport" CssClass="btn btn-primary"
            Text="Generate Report" ValidationGroup="ReportModal" OnClientClick="javascript:setFormSubmitToFalse();" />
    </div>

</div>

Сценарий

function HideGenerateReportPopup() {
            $('#AwaitPracSignoffReportModal').modal().hide();
        }

        function setFormSubmitToFalse() {
            setTimeout(function () { _spFormOnSubmitCalled = false; }, 3000);
            return true;
        }

CodeBehind

btnGenerateReport.Click += (s, ev) =>
        {
            this.Presenter.ExportToExcel();

            ScriptManager.RegisterStartupScript(this, this.GetType(), "Generate Report", "HideGenerateReportPopup();", true);
        };

Код докладчика (другой проект)

 Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
        int worksheetNo = 0;

        foreach (System.Data.DataTable dt in ds.Tables)
        {
            Aspose.Cells.Worksheet worksheet = workbook.Worksheets[worksheetNo];

            worksheet.Cells.ImportDataTable(dt, true, "A1");
            worksheet.AutoFitColumns();
            worksheetNo++;
        }

        workbook.Save(HttpContext.Current.Response, filename, ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Excel97To2003));

            HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();

Я добавил функцию setFormSubmitToFalse, как рекомендовано здесь .Если я пытаюсь добавить AjaxSettings для btnGenerateReport, он выдает ошибку сценария

Uncaught Error: Sys.WebForms.PageRequestManagerParserErrorException: сообщение, полученное с сервера, не может быть проанализировано.Распространенные причины этой ошибки: изменение ответа путем вызова Response.Write (), фильтров ответа, HttpModules или трассировки сервера.

Когда я его удаляю, страница остается как естьи больше никаких контролов не работает.

1 Ответ

0 голосов
/ 30 мая 2018

Нашел мой ответ здесь

на странице и в PDF.Вы не можете сделать это.Обычно страницы загрузки начинают загрузку как отдельный запрос, когда вы к ним обращаетесь (я полагаю, через JavaScript), с прямой ссылкой на тот случай, если JavaScript не работает.

Теперь ядобавили отдельную страницу (ashx) и откройте ее на отдельной вкладке.

...