我有一个页面,其中包含带有 Telerik Charts 的用户控件(网格也可以,但它们可以正常工作)。在此页面中,用户可以单击按钮以重定向到“打印机友好版本”类型页面,该页面将通过javascript打开新窗口并进行略微不同的视图(用于格式化和东西),但telerik代码都是一样的。
问题,我的图表在原始窗口中显示正常,但新窗口基本上显示没有数据的空图表。此错误仅出现在IE中,仅适用于图表。无论出于何种原因,网格都能正常工作。我认为这是由于浏览器之间的脚本缓存存在差异 - 如果我错了,请纠正我,我对客户导向的Web开发不熟悉。
无论如何,我读到Telerik在通过ajax加载时加载数据和/或js文件时遇到问题,所以可能这就是问题所在?如果是这样,我怎么能绕过这个?如果没有,任何可能导致这个问题的想法?这让我感到非常沮丧,因为打印预览页似乎应该是最简单的工作。
修改:
图表被渲染为html(如果有人可以解释如何将它们渲染为图像,那将是非常棒的)。而开发工具在chrome和IE之间显示基本相同的东西。每当我的网络服务恢复正常时,他们就会使用WinMerge并寻找它们之间的任何特性/差异。然而,与此同时,“渲染为图像”概念听起来很有希望。这样我就可以从第一页保存图像,并将其直接插入打印预览页面,对吧?因为它是一个打印预览页面,所以它不需要是交互式的,也不需要任何东西,所以这样做很好。
另一个(重要的)编辑:
这里有更多细节:
这是一个并排的工作(在chrome中)而不工作(在IE中):
答案 0 :(得分:1)
您是否考虑过使用特定于打印的样式表,例如
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
在其中指定要在打印时应用的样式。
这样,您可以避免重新加载页面(重复数据库命中等),而无需深入研究Telerik控件的AJAX。
修改强>
关于使用图像而不是HTML,首先要确保不会丢失任何功能/细节,然后查看RadChart控件的.Save()
方法。您可以将其保存到内存流中,或者如果要重新使用该映像,请将其保存到Web服务器上的目录中并定期清理它。这样,您只需将打印版本指向图像,而不是重新生成它。