是否可以创建自定义 Web 前端来运行 SSRS 报告?
我们有一个现有的跨浏览器 Web 前端,用于收集报告输入(针对非 SSRS 平台),我们希望看到继续使用 SSRS。它包括已经内部开发的特定于域的 UI 控件,并且没有任何东西可以与 SSRS 相媲美。 我们不需要对类型感知控件进行动态渲染 - 尽管我认为 RDL 可以帮助我们告诉我们报表采用哪些参数(及其类型) - 但我们确实需要的不仅仅是
Report Manager提供的内容。 本质上,我们希望自定义/替换由报表管理器生成的输入收集 UI。我们还需要一些品牌推广。完全废弃报表管理器(我的意思是外部)并通过我们自己的 ASP.NET 应用程序直接与 SSRS Web 服务交互会更容易吗?
我是报告领域的新手,我找不到这方面的任何信息。我们正在使用 SQL Server 2005 报告服务。
本质上,我们有一个与用户交互的自定义 ASP.NET 应用程序。当第一页加载时,它会显示可供该用户使用的报告列表(通过 Web 服务从 ASP.NET 应用程序到 SSRS 的通信并使用身份模拟,以便对列表进行安全修剪)。如果自定义 ASP.NET 应用程序位于与报表服务器不同的服务器上,则需要在此处使用 Kerberos。
用户选择报告后,将显示参数选择屏幕(仍在自定义 ASP.NET 应用程序中)。当他们选择参数并单击“生成报告”时,某些 JavaScript 会将每个参数的输入标记动态添加到 HTML 表单(对用户隐藏),然后向 SSRS Web 服务器执行 HTTP POST。
然后,我们使用 OOTB 报告查看器来显示报告,但它托管在框架中,以便屏幕顶部允许用户包含在自定义 Web 应用程序中。这使他们能够快速返回并更改参数。
我们采取这种方法是因为我们有一个全球性组织,但我们的应用程序是集中托管的 - 我们希望为所有用户提供尽可能好的性能。我们发现,报告查看器的性能相当不错,但 OOTB 附带的 OOTB 参数选择对于高延迟的连接来说非常糟糕 - 大量回发和传输的流量太多。
另一个技巧 - 我们将参数“隐藏”在报告中,以便参数不会显示在报告查看器中。
编辑:我们最初使用 SSRS 2005 进行此操作,最近升级到 SSRS 2008,麻烦最小。
您可以以任何方式实现输入收集,然后只需将输入作为参数传递给报告:
//the report classes are in the namespace: Microsoft.Reporting.WebForms
Collection<ReportParameter> paramList = new Collection<ReportParameter>();
string reportPath = ApplicationInfo.ScorecardReportPath;
paramList.Add(new ReportParameter("UID", "5"));
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://servername/ReportServer");
ReportViewer1.ServerReport.ReportPath = reportPath;
ReportViewer1.ServerReport.SetParameters(paramList);
ReportViewer1.ServerReport.Refresh();
ReportViewer 是一个可以拖放到页面上的控件:
<rsweb:ReportViewer id="ReportViewer1" runat="server" documentmapwidth="175px"
font-names="Verdana" font-size="8pt" promptareacollapsed="true" width="100%"
zoommode="Percent" zoompercent="100"/>
我使用这种方法将报表查看器嵌套在母版页中包含的页面内。它允许显示菜单/页眉/页脚。