2

我在加载到 MVC 单页应用程序的 iframe 中的 Web 表单中使用 ReportViewer(2012,版本 11)用户控件。我发现我运行了一个报告并且它工作正常,但是我转到另一个报告它在我刷新之前不会运行。

先前带有 iframe 的内容部分已从 dom 中删除,因此我看不出它会如何干扰下一个报告。我的猜测是报告查看器污染了全局命名空间。

无论如何,错误是

TypeError: cs is null
return cs.getPropertyValue('direction');

有谁知道这一点,或者是否有办法在报告查看器之后进行清理,或者是否有更好的报告查看器控件?

4

1 回答 1

0

我的申请和你的差不多。我正在使用 jQuery 将 ReportViewer 加载到 DOM 元素中(嵌入在 iframe 中)。

与此类似的东西:

var formargs = $("#reportArgsForm").serialize();
var windowheight = $("#content").height() - 8;
var link = '<iframe id="report_iframe" style="height:' + windowheight + 'px;width:99%;overflow: visible;" src="Reports/SimpleReportViewer.aspx?' + formargs + '"></iframe>';

$("#tabs").tabs("option", "active", 1);
$("#tabs-display").html(link);

如果您注意到,报告实际上显示在它自己的 jQuery-UI 选项卡中。我遇到了同样的错误,因为我已升级到 jQuery-UI 1.10.1 并且选项卡“选择”方法不再起作用

在我的情况下,错误深埋在 Microsoft.Reporting.WebFormsClient._InternalReportViewer.GetRTLDirection 中。报表查看器代码试图在某些元素上调用 window.getComputedStyle 并且它返回 null。它是 null 因为传入的元素不可见。

一旦我修复了 jQuery-UI 选项卡切换问题,ReportViewer 错误(“cs is null”)就消失了。

于 2013-05-22T01:54:34.380 回答