2010-11-13 3 views
0

В нашем веб-приложении у нас есть несколько веб-страниц. Модуль контактов - один из широко используемых модулей. Весь модуль состоит из 3 страниц.Печать нескольких страниц на кнопке Нажмите в ASP.net

На первой странице отображаются контактные данные с несколькими элементами управления сервером, вторая страница - это история контактов со всей историей о контакте и третьей страницей, а затем еще несколько деталей контакта.

Есть ли способ, когда пользователь нажимает одну кнопку на любой из этих страниц, он печатает все 3 страницы. С контентом для этого контакта. Обратите внимание, что это не статические страницы. Контактная информация отображается на основе данных в нашей БД Oracle.

+0

Как вы подключаете свои модули внутри веб-страницы? Ну, мой вопрос, как вы все вместе показываете? кадры iframe ajax? Или вы не показываете им всех, кроме одного в то время? и вы выиграли, чтобы распечатать их вместе – Aristos

ответ

1

Если все эти страницы генерируются динамически, вам нужно создать 4-ю страницу, которая генерирует все 3 из этих объединенных страниц, а затем включает URL-адрес этой страницы на каждой из 3-х страниц, которые у вас есть, следующим образом:

<link rel=alternate media=print href="urlToCombinePage"> 

Это будет инструктировать браузер, чтобы использовать свой 4-й странице в любое время кто-то хочет, чтобы напечатать один из 3-х страниц, которые вы уже имеете. Замена должна происходить автоматически и не должна быть заметной для пользователя, пока они не получат свой печатный документ.

Только другим способом, который я могу придумать, является переписать все три страницы и объединить их в один, тогда вы можете использовать Javascript для отображения и скрытия части страницы, и вы можете использовать @ media = print css stylesheet, чтобы показать все из них, когда документ печатается.

0

В идеале вы конвертируете страницы в пользовательские элементы управления, а затем добавляете новую страницу, содержащую все новые элементы управления.

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

Это передается URL-адреса страниц для отображения через параметры (или по сеансу - ваш выбор).

Процесс затем:

foreach(var page in pages) 
    Server.Execute(page, Response.Output); 

// Inject a window.print() command via a script block 

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

Если вы хотите быть более основательным, обрабатывайте каждую страницу поочередно, объединяя тела, чтобы у вас была одна страница.

Смежные вопросы