2013-11-25 2 views
0

Я хочу распечатать страницу aspx, но перед печатью хочу скрыть некоторые элементы управления со страницы, после чего я хочу снова показать эти элементы управления. Я использую этот код:Печать asp.net с javascript

 String scriptText = "<script language='javascript'>"; 
     scriptText += "document.getElementById('textB1').style.visibility = \"hidden\";"; 
     scriptText += "document.getElementById('panel').style.visibility = \"hidden\";";   
     scriptText += "window.print();"; 
     scriptText += "document.getElementById('textB1').style.visibility = \"visible\";"; 
     scriptText += "document.getElementById('panel').style.visibility = \"visible\";"; 
     scriptText += "</script>"; 
     ClientScript.RegisterStartupScript(this.GetType(), "Print", scriptText); 

Проблема заключается в том, что я не знаю, как windows.print() работает, потому что элементы управления все еще видны на моей странице. Как правильно подобрать распечатанную страницу? Только после этого элементы управления должны быть видимыми?

+0

ли вы попробуете style.display = "нет"? –

+0

что касается 'setTimeout (функция() {... печать ....}, 3000)'? –

+0

будет 'document.write ('asp.net')' на функцию window.onload? :) – deostroll

ответ

1

Если вы просто хотите скрыть элементы на странице, в то время как печать намного проще использовать тип мультимедиа CSS print.

Для получения дополнительной информации о CSS Media Types see here

Пример:

Добавьте следующий CSS к любой странице или на таблицу стилей

@media print { 
    .hiddenOnPrint { 
     display:none; 
    } 
} 

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

<asp:TextBox ID="textB1" runat="server" CssClass="hiddenOnPrint"></TextBox> 
<asp:Panel ID="panel" runat="server" CssClass="hiddenOnPrint"></panel> 

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

Example JSFiddle

+0

Да, работает очень хорошо! :) Благодаря. У меня все еще есть вопрос. В IE у меня есть заголовок (имя страницы, страницы и т. Д.) И нижний колонтитул (URI) для печатных страниц. Как я могу избавиться от них? – dpv

+0

@dpv Единственный способ, которым я знаю, - это изменить настройку печати. ​​Перейдите в «Настройки», выберите «Печать» и затем «Настройка страницы». Там вы можете установить верхний и нижний колонтитулы пустыми. Это будет работать только на машине, к которой вы применяете это, поэтому другие будут получать заголовки. – Nunners

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