使用javascript打印asp.net

使用javascript打印asp.net,javascript,asp.net,printing,Javascript,Asp.net,Printing,我想打印一个aspx页面,但在打印之前我想从页面隐藏一些控件,然后我想再次显示这些控件。我正在使用以下代码: String scriptText = "<script language='javascript'>"; scriptText += "document.getElementById('textB1').style.visibility = \"hidden\";"; scriptText += "document.getEl

我想打印一个aspx页面,但在打印之前我想从页面隐藏一些控件,然后我想再次显示这些控件。我正在使用以下代码:

        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);
String scriptText=”“;
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+=“”;
RegisterStartupScript(this.GetType(),“Print”,scriptText);
问题是我不知道windows.print()是如何工作的,因为这些控件在我打印的页面上仍然可见。
如何获得捕获打印页面的正确时间?只有在这之后,控件才能设置为可见?

如果您只是想在打印时隐藏页面上的元素,那么使用CSS
打印
媒体类型是一个更容易的选择

有关

例如:

将以下CSS添加到页面或样式表中

@media print {
    .hiddenOnPrint {
        display:none;
    }
}
然后将此类添加到打印时要隐藏在页面上的每个控件:

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

您是否尝试过style.display=“none”?关于
setTimeout(函数(){…打印…},3000)
?将
document.write('asp.net')
放在窗口上。onload函数做什么?:)是的,很好用!:)谢谢我还有一个问题。在IE上,我有打印页面的页眉(页面名称、页面等)和页脚(URI)。如何摆脱它们?@dpv我知道的唯一方法是编辑打印设置-转到设置,选择打印,然后选择页面设置。在那里,您可以将页眉和页脚设置为空。这将只在您应用此消息的机器上工作,因此其他人仍将收到消息头。