基于CSS的系统范围内的解决方案
这不需要任何JavaScript或Ajax框架或任何其他包装。它已经在Internet Explorer,Firefox,Safari和Chrome上进行了测试。
可以在报表服务器的样式表级别上修复此问题。
首先,导航到安装了报表服务的目录,在我的案例中(SQL Server 2012 SP1)为:
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer
在该目录中,您将找到一个名为reportserver.config的文件。
请参阅为HTML Viewer和Report Manager自定义样式表。
在该文件中插入单个XML行,例如(来自上述文档):
<Configuration>
...
<HTMLViewerStyleSheet>SafariChromeFix</HTMLViewerStyleSheet>
...
</Configuration>
保存下来。
他们不做什么在上面的链接中告诉您的是,该条目将完全覆盖默认样式表。我第一次尝试通过添加div样式表来使报表呈现正常工作,其他所有内容均已损坏。一旦我发现对reporserver.config文件的编辑并没有增加,但实际上替换了默认样式表,我复制了默认样式表,一切开始正常工作。
接下来,进入“样式”目录(C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\Styles
)。
复制一个名为SP_Full.css的文件,并将其命名为SafariChromeFix.css。此时,SafariChromeFix.css应该与SP_Full.css相同。
编辑SafariChromeFix.css并将以下行添加到顶部:
div {
overflow: visible !important;
}
保存。
保存后,此Reporting Services实例上的所有现有报告将在所有浏览器(包括Chrome和Safari)上呈现。
请注意:
这不仅是可能的,而且极有可能该报告服务器的更新将被报告服务的更新所覆盖,因此您可能需要<HTMLViewerStyleSheet>SafariChrome</HTMLViewerStyleSheet>
随时间在其中添加标记。
这也为我们提供了一个进入默认样式表的地方,并从已经起作用的内容开始进行了许多其他自定义更改。并且由于它不是默认样式表,因此新的自定义CSS文件在升级和修补程序期间不会被覆盖。