为报表创建数据源

ReportViewer 控件的处理模式决定了可在报表后使用的数据类型。

在 SQL Server 2005 报表服务器上处理报表的远程处理模式中,报表服务器上的数据处理扩展插件决定了可以使用的数据源类型。为 SQL Server、Analysis Services、SQL Server Integration Services、Oracle、SAP NetWeaver® Business Intelligence、XML、ODBC 和 OLE DB 提供了默认的数据处理扩展插件。在设计时,当您在 Business Intelligence Development Studio(这是 SQL Server 2005 中附带的报表设计工具)中创建报表时,会在报表定义中指定到数据源的连接以及为报表检索数据的查询。当您将查询返回的字段拖动到报表设计图面上时,可将这些字段用在报表布局中。有关在服务器报表中如何处理数据的更多信息,请参见 SQL Server 联机丛书中的连接数据源 (Reporting Services)

在由应用程序内的控件处理报表的本地处理模式中,可以指定 Visual Studio 数据源和字段以定义报表后的数据。到数据源的连接和为报表检索数据的查询在设计时在应用程序项目中定义。只要客户端报表可以作为 ADO.NET DataTable 或业务对象的可枚举集合来提供,该报表就可以使用任意源中的数据。数据表或业务对象会返回该报表可以使用的字段列表。字段包含指向数据库字段和名称属性的指针。可以将字段从“数据源”窗口拖动到报表布局上。

在报表中绑定数据

报表定义使用数据区域 将数据绑定到报表。可从多种数据区域中进行选择,以支持报表中的不同数据结构。可在报表定义中使用的数据区域示例包括表、矩阵、图表和列表。若要在报表中绑定数据,必须执行下列操作:

  • 定义要在报表中使用的数据源和数据集(可以使用本主题中提供的信息和链接来了解如何执行此操作)。“数据源”窗口显示可以使用的数据源和字段。

  • 将要使用的数据区域从“报表工具箱”拖动到设计图面上。

  • 将各个字段从“数据源”窗口拖动到数据区域中。

    每个数据区域可以使用单个数据集中的字段。ReportViewer 控件和报表服务器都不能执行不同数据集之间的联接。例如,如果使用业务对象,则必须在业务对象内执行联接。有关数据区域的更多信息,请参见向报表中添加数据区域(Visual Studio 报表设计器)

如何为 ReportViewer 报表添加数据源

建议使用下列方法来设置数据源,以便能够在客户端报表定义中使用该数据源。

  • 向应用程序项目中添加数据源并配置指向基础数据的数据连接。请在基础数据存储区中选择要使用的特定数据。要在报表中使用的数据必须存在于“数据源”窗口中。对于数据表,数据源将显示查询所返回的列名称。对于业务对象的可枚举集合,数据源将显示由类对象所公开的简单数据类型的公共属性列表。

  • 若要创建数据表,请向项目中添加数据集,并使用 TableAdapter 向导配置该数据表。TableAdapter 向导提供了查询生成器和数据预览功能,使您可以立即确认查询结果。

  • 若要创建业务对象,请使用**“项目”菜单中的“添加新项”**命令,并选择类对象。提供用于公开简单数据类型的公共属性的实现方式,以便在设计时使用。提供用于返回这些属性的可枚举集合的方法,以便在运行时使用。

配置了数据源之后,可绑定数据就会在“数据源”窗口中显示为一个层次结构。若要将数据绑定到报表,请将展开层次结构的节点拖到报表布局中的文本框或数据区域中。如果在定义了报表以后修改数据集,则必须更新报表和控件中的数据绑定。有关更多信息,请参见更新和重新绑定数据源引用(Visual Studio 报表设计器)

您可以在项目中包含任意数量的数据源。若要查看报表实际使用的数据源列表,请选择“报表”菜单中的**“数据源”**。若要在应用程序中预览报表及其数据,则必须生成或部署该应用程序以验证报表是否包含您期望的数据。有关配置控件和定义报表布局的更多信息,请参见将 ReportViewer 配置为进行本地处理创建客户端报表定义 (.rdlc) 文件

若要立即开始操作,请使用下列演练来了解如何向项目中添加每种数据源:

使用业务对象

业务对象是公开简单数据类型的公共属性的任意应用程序对象。业务对象的示例可包括基础数据存储区中的客户对象集合、由应用程序创建的书籍标题对象数组或者从 RSS XML 源创建的通道对象列表。

若要成为可访问的数据源,该集合必须支持 IEnumerable。可绑定数据在“数据源”窗口中显示为一个层次结构视图。对于业务对象,数据源将显示由类对象所公开的简单数据类型的公共属性列表。您随后可以将它们绑定到报表定义中的数据区域和文本框中。

若要提供业务对象集合,可以向项目中添加类或添加对类程序集的引用。

使用数据表

DataTable 是 ADO.NET DataSet 的一部分,通过从“项目”菜单中选择**“添加新项”**可以轻松地将其添加到项目中。若要配置数据连接,请启动 TableAdapter 配置向导。从“数据”菜单中选择“添加”,然后选择“TableAdapter”。还可以定义查询来限制结果集。向导结束后,可通过“数据源”窗口来访问 DataTable 中的列,以便您可以将它们绑定到客户端报表定义中的数据区域和文本框中。

为 ReportViewer Web 服务器控件定义数据源

数据源控件支持提取数据访问层,以便网页上的控件绑定到数据源,而该数据源随后绑定到实际数据。这使您可以有效地更改数据源,而无需将每个控件重新绑定到每个数据块。

当您设计网页时,**“工具箱数据”**区域将列出几个数据源控件,例如 SqlDataSourceXmlDataSource。某些数据源控件支持在网页中使用页内存,其他控件则使用共享数据。因为报表不使用页内存,所以对于 ReportViewer Web 服务器控件,最佳选择是使用 ObjectDataSource 控件。此控件在内存中缓存对象(DataTable 或业务对象集合)与报表数据区域之间架起了一座桥梁。如果向网页中添加了 ReportViewer 控件,将会自动添加和配置 ObjectDataSource 控件。

为了尽可能避免编写额外代码,ASP.NET 的网页支持提供了额外的后台处理来检测提供可绑定业务对象的集合。如果向项目中添加的类将返回一个对象集合,且这些对象可以被标识为业务对象,则该集合将会自动添加到“网站数据源”窗口中。

另请参见

参考

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

概念

将 ReportViewer 配置为进行远程处理
更新和重新绑定数据源引用(Visual Studio 报表设计器)

其他资源

TableAdapter 概述
示例和演练