2013-11-25 48 views
0

我想打印一個aspx頁面,但在打印之前我想隱藏頁面中的一些控件,之後我想再次顯示這些控件。我使用此代碼:用javascript打印asp.net

 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(function(){... print ....},3000)''? –

+0

將window.onload函數中的'document.write('asp.net')'做了嗎? :) – 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