watersa8 Ответов: 1

Диалоговое окно печати Webforms не отображается во второй раз


Всем Привет,

Приношу свои извинения, поскольку я не являюсь веб-разработчиком, но иногда выполняю странную работу, которая требует от меня создания веб-формы или 2. У меня есть требование распечатать отчет на веб-странице, и я пытаюсь заставить кнопку печати работать надежно.

Проблема, с которой я столкнулся, заключается в том, что во второй раз, когда я нажимаю кнопку печати, она по какой-то причине не открывает диалоговое окно печати, и я не могу понять почему.

Пожалуйста, смотрите упрощенную версию моей проблемы ниже

protected void PrintAllButton_OnClick(object sender, EventArgs e)
        {
            using (var pdi = new PrintDialog())
            {
                if (pdi.ShowDialog() == DialogResult.OK)
                {
                }
            }
        }


Диалог срабатывает правильно в первый раз и он находится в операторе using поэтому должен быть очищен правильно но я явно что то упускаю

Заранее спасибо.

Что я уже пробовал:

Поиск в Google и упрощение решения до самого простого возможного сценария выше

1 Ответов

Рейтинг:
8

Richard Deeming

Код, который вы показали, выполняется на сервере.

Может быть появиться чтобы работать при отладке кода в Visual Studio, но это только потому, что сервер и клиент являются одной и той же машиной в данном конкретном экземпляре.

Как только вы развернете свой код на реальном сервере, он сломается. В лучшем случае вы получите исключение, сообщающее вам, что текущий процесс не является интерактивным. В худшем случае диалоговое окно появится на сервере, где его никто никогда не увидит, и ваш код будет висеть, ожидая, когда кто-то нажмет кнопку на невидимом диалоговом окне.

Если вы хотите распечатать текущий HTML-документ, вам нужно будет использовать Javascript, работающий на клиенте, и вызвать Окна.печать()[^] метод.

Если вы хотите напечатать что-то другое, кроме HTML, то вам придется позволить пользователю загрузить файл и распечатать его самостоятельно. Нет никакого способа инициировать печать внешнего файла из Javascript.