【发布时间】:2012-09-20 14:40:58
【问题描述】:
在特定屏幕中,我需要让用户打印出一些数据。由于显示的数据比较复杂,所以使用了标签:
lblTree.Text = stringHTML;
树使用动态构造的 HTML 字符串显示。最后的字符串是 52 000 个字符长。我不认为这很重要,但我想我会解释一下背景。 在 aspx 中,它看起来像这样:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="3" align="left" class="PrintTBLHeader"><br />report as of 20/09/2012 : <br /><br /></td>
</tr>
<tr>
<td colspan="3"><br /><asp:Label runat="server" ID="lblTree"></asp:Label><br /><br /></td>
</tr>
<tr>
<td colspan="3" align="left" class="PrintTBLHeader"><br />2nd title:<br /><br /></td>
</tr>
<tr>
<td colspan="3"><br /><asp:Label runat="server" ID="lblMPMtree"></asp:Label></td>
</tr>
</table>
问题是这样的: 当我打开打印预览时,它应该显示 6 页(就像在 Firefox 和 chrome 中一样——它们工作正常),但是 IE8 的这个打印预览只显示了 3 页。
lblTree 在第一页的末尾被剪切 然后在第二页上,不是显示 lblTree 的其余部分,而是以“第二个标题”开头(上面示例中的 tr #3)
我发现了一些与此类相关的文章,其中解决方案是将media="print" 添加到<link>。
<link rel="stylesheet" type="text/css" href="..." media="print" />
那没用。
【问题讨论】:
-
您对
<td>s 以及您插入到列中但在 IE 中不起作用的内容都应用了哪些 CSS? -
没有任何内容(如您在上面的示例中所见),因为标签正在获取 HTML 文本,并使用大量 css 类完全格式化。最终打印出来的树有很多颜色,甚至是小图标,诸如此类 您在页面上声明了doctype 吗?ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">是的,但这是一件坏事。这意味着它处于 quirksmode(这意味着在这种情况下,您正在定义一个 DOCTYPE 但没有使您的代码保持真实)。通过validator.w3.org 运行页面并修复所有市长错误。完成后,再次发出警报,看看它是否出现CSS1Compat或CSS2Compat。在那之前,没有什么可以确定 IE8 会做任何事情。
标签: asp.net html printing internet-explorer-8