Reporting Services中参数说明(因为在框架中要在新的窗口打开报表,所以这理主要是rc:LinkTarget)
为用户提供从应用程序访问报表的权限的最简单方法就是使用超级链接。如您已经看到的那样,每个报表都具有唯一的、用于在浏览器中显示报表的路径。对于仪表板应用程序,报表应该在单独的窗口中打开,因此我将为该超级链接指定一个目标。到目前为止,这是非常简单的,但是对于具有参数报表的报表(例如,Employee Sales Summary 报表)来说,情况又如何呢?要真正地将报表集成到应用程序中,您通常需要为参数指定某些值,以便用户不会被经常提示。 Reporting Services 使这项任务非常简单:报表参数的值可以指定为 URL 的一部分。例如,Employee Sales Summary 报表具有 ReportYear、ReportMonth 和 EmpID 参数,因此显示编号为 24 的员工在 11 月份的销售额的超级链接可以是:November Sales Summary 不具有在 URL 中指定的值的参数将使用在报表设计器中设置的默认值,因此刚才展示的示例销售汇总报表使用的 ReportYear 值是 2003。Reporting Services 还有一组用于控制报表显示方式的内置参数。这些参数通过加上前缀“rs:”来区别您自己的报表参数。 其中最有用的一个参数就是 rs:Format 参数,它用于指定呈现报表的格式。这使您可以包括不需要显示在 HTML 中的报表,还可以使用诸如 PDF 甚至是 XML 的格式。其他常用参数是 rs:Command,指示出要应用到您所指定的路径的操作。例如,rs:Command=Render 将呈现一个报表,而 rs:Command=ListChildren 将列出文件夹中所有项。 如果您没有指定命令,Reporting Services 将查看您指定的路径并计算出要采取的适当操作,例如,呈现报表。图 4 显示了 rs:parameters 的列表。 另一组内置参数控制各种输出格式的行为并使用 rc:prefix。每个报表格式都具有其自己特定的一组参数。例如,要以没有标题行的逗号分隔值 (CSV) 格式呈现报表,您应该使用 rc:NoHeader 参数: Company Sales HTML 格式具有非常多的 rc:parameters,在将报表集成到 Web 应用程序中时为您提供很多的灵活性。如果应用程序将报表参数选择传递到报表,那么您可能要通过将 rc:Parameters 设置为 false 来避免提示用户,甚至可以通过将 rc:Toolbar 设置为 false 来关闭整个工具栏。
如果您的 Web 应用程序使用框架来显示报表(比如说,在左侧窗格中显示报表列表,在右侧窗格中显示报表内容),您将需要使用 rc:LinkTarget 参数来指定内容框架的名称。否则,当用户点击报表中的任意嵌入链接时,浏览器就会使用整个窗口来重新显示报表,而不是保留导航窗格和内容窗格的框架。
您可以使用我介绍过的 URL 参数来添加“快速启动”区域,该区域包含使用户可以打开常用报表的超级链接的列表(请参见图 3)。每个超级链接将其目标设置为 _blank 以在独立的浏览器窗口中打开报表,并使用诸如 rs:Format=EXCEL 这样的参数来控制报表在浏览器中的显示方式。 将报表嵌入到 Web 应用程序中 如果在用户查看报表时,不再使用弹出新的浏览器窗口,您可能希望实际地将报表嵌入到自己的 Web 页中。最简单的方法就是在 Web 页上使用 IFRAME,并使用我介绍过的基于 URL 的相同技术来设置 SRC 属性。如果您使用这种技术,切记要将 rc:LinkTarget 参数设置为 IFRAME 的名称,以避免当用户单击报表的链接时在框架外弹出任意一个框架。
如果您以前设计过 ASP.NET 的服务器控件,您可能会认为 IFRAME 技术并不十分完美,因为它要求 Web 开发人员理解 Reporting Services 的 URL 参数语法才能构建适当的 SRC 字符串。构建一个封装有所有参数并使开发人员可以简单地设置诸如 ReportPath 和 Zoom 之类的参数的服务器控件难道不是一个更好的想法吗? Reporting Services 非常方便地附带了名为 ReportViewer 的示例(安装到 Reporting ServicesSamplesApplicationsReportViewer 目录),它可以实现这个想法。该控件封装了 IFRAME 和 URL 访问参数逻辑,并提供了一个更简单的用于将报表嵌入到应用程序中的方法。要使用该控件,请打开并构建 ReportViewer 解决方案,然后通过浏览到 ReportViewer 解决方案的 bin 目录中的 ReportViewer.dll,切换到您的 Web 应用程序并将该控件添加到工具箱中中...