【问题标题】:Print asp.net with javascript使用 javascript 打印 asp.net
【发布时间】:2013-11-25 12:47:09
【问题描述】:

我想打印一个 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);

问题是我不知道 windows.print() 是如何工作的,因为这些控件在我的打印页面上仍然可见。 如何在捕获打印页面时获得正确的时间?只有在那之后,控件才能设置为可见?

【问题讨论】:

  • 你试过 style.display="none" 吗?
  • setTimeout(function (){...print....},3000) 呢?
  • 请问document.write('asp.net') 上有一个window.onload 函数吗? :)

标签: javascript asp.net printing


【解决方案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

【讨论】:

  • 是的,效果很好! :) 谢谢。我还有一个问题。在 IE 上,我有打印页面的页眉(页面名称、页面等)和页脚 (URI)。我怎样才能摆脱它们?
  • @dpv 我知道的唯一方法是编辑打印设置 - 转到设置,选择打印,然后选择页面设置。在那里您可以将页眉和页脚设置为空。这仅适用于您应用它的机器,因此其他人仍会收到标头。
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
相关资源
最近更新 更多