最终解决方案(也适用于 SSRS 2012!)
将以下脚本附加到“C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js“(在 SSRS 服务器上):
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
其实我不知道div的名字是否总是ctl31_ctl10
:就我而言,它是(而不是通过 SQL Server 2012 azzlak 发现ctl32_ctl09
).
如果此解决方案不起作用,请查看浏览器中的 HTML 以查看脚本是否正常工作,然后更改溢出:自动财产给溢出:可见.
ReportViewer控件的解决方案
将此样式线插入到.aspx
页面(或链接到.css
文件(如果有):
#reportViewer_ctl09 {
overflow:visible !important;
}
Reason
Chrome 和 Safari 渲染溢出:自动以不同的方式尊重 Internet Explorer。
SSRS HTML 是 QuirksMode HTML,依赖于 IE 5.5 错误。非IE
浏览器没有 IE 怪异模式,因此呈现 HTML
正确地
SSRS 2008 R2 报告生成的 HTML 页面包含div其中有溢出:自动风格,并将报告变成隐形报告。
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>
手动更改(使用 Chrome 的调试窗口)最终 HTML溢出:自动 in 溢出:可见我可以在 Chrome 上查看报告。
I love 蒂姆的解决方案;它既简单又有效。
但仍然存在一个问题:每当用户更改参数(我的报告使用参数!)AJAX 刷新 div 时,溢出:自动标签被重写,并且没有脚本更改它。此技术说明详细信息解释了问题所在。
发生这种情况是因为在使用 AJAX 面板构建的页面中,只有 AJAX 面板会更改其状态,而不会刷新整个页面。因此,您在标记上应用的 OnLoad 事件仅触发一次:页面第一次加载时。之后,更改任何 AJAX 面板都不会再触发这些事件。
艾纳尔克先生向我建议了解决方案here.
另一种选择是将函数重命名为 pageLoad。
如果页面上存在具有此名称的任何函数,那么 ASP.NET Ajax 将自动调用该函数,并且在每次部分更新后也是如此。如果这样做,您还可以从 body 标记中删除 onload 属性
所以我编写了解决方案中显示的改进脚本。