我是开发自定义SharePoint应用程序的团队的一员,该应用程序使用AngularJS和SSRS报告。基本上,应用程序允许用户选择报表,选择一组参数,然后在站点/应用程序中查看报表。
在我们打开ToolBar报告之前,一切都很顺利。在这一点上,报告停止呈现。只有工具栏是可见的。
我们正在做的事情如下:
显示报表的应用程序部分的html:
<section class="left-panel report-view-panel ssrsReport show">
<h1>{{CurrentReport.Title}}</h1>
<button class="btn-report-close" ng-click="closeReport()" type="button">Close</button>
<div class="scroll-list">
<figure class="report">
<div class="sample-report">
<div ng-include='CurrentReportURL'></div>
</div>
</figure>
</div>
</section>在控制器javascript中,我们将报表服务器url (CurrentReportURL)构建成如下所示:
bin/ReportServer?http://ourreportserver.com/Our%20Reports/Report1.rdl&rs:Command=Render&rc:Toolbar=false&rc:Parameters=false&Param1=41001&Param2=08&Param3=0
我们告诉它呈现报表、隐藏工具栏和隐藏参数选择。这个很好用。报告如预期的那样呈现。
但是,将url更改为:
bin/ReportServer?http://ourreportserver.com/Our%20Reports/Report1.rdl&rs:Command=Render&rc:Toolbar=true&rc:Parameters=false&Param1=41001&Param2=08&Param3=0
导致只呈现工具栏。没有报告。如果我复制相同的url并在浏览器窗口中打开它,报表将按预期呈现。
我更深入地研究了使用Chrome和Chrome的Developer Tools Network选项卡的两个场景。ng-include中的url和浏览器窗口中的url之间的调用有几个不同。但是,最突出的是将所有报表查看器和报表参数转换为适当的RSViewerPage.aspx参数到ReportViewer。(我会发布实际链接,但我也是这样告诉我,我需要一个10的声誉来做到这一点)。
我在Chrome和IE10上得到了同样的结果。
我正在寻找一些指导,为什么ng-包括版本没有做这篇文章?我相信这篇文章与SSRS会话有关,而SSRS会话只在工具栏上进行跟踪,但我真的不确定。
任何指导都将不胜感激!
发布于 2014-01-04 22:41:11
我即将将SSRS集成到angularjs应用程序中,我正在考虑使用iframe并将iframe的src属性更改为所选报告的url。
我甚至没有考虑使用ng-include,因为我认为ssrs返回的html将用于处理asp.net回发/查看状态模型。通过使用iframe,这个回发/查看状态模型将在页面上的“孤岛”中被隔离,不会影响父容器。
克里斯蒂安
发布于 2013-08-16 12:31:17
试一试
<div ng-include src="CurrentReportURL"></div>这在任何浏览器中都能用吗?
如果它在铬而不是IE中工作,请确保您遵循的是角度IE限制部分。
例:
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
</script>
<![endif]-->另外,对于动态urls,请查看:此链接
https://stackoverflow.com/questions/18213714
复制相似问题