ASP.NET服务器控件使用之Reportviewer 报表

1.       Reportviewer 报表

1.1. Reportviewer控件

注:本教程附2个事例:

l  演练:在本地处理模式下将数据库数据源与 ReportViewer Web 服务器控件一起使用

l 演练:在本地处理模式下将业务对象数据源与 ReportViewer Web 服务器控件一起使用

如果您已经对ReportViewer控件基础知识比较了解,可以直接参阅事例。

1.1.1.                 简介

Microsoft Visual Studio 2005 包括报表设计功能和 ReportViewer 控件,使您可以将功能完整的报表添加到自定义应用程序。报表可以包含表格格式数据、聚合数据和多维数据。提供 ReportViewer 控件的目的是可以处理和显示应用程序中的报表。控件有两种版本。ReportViewer Web 服务器控件用于在 ASP.NET 项目中驻留报表。ReportViewer Windows 窗体控件用于在 Windows 应用程序项目中驻留报表。

这两种版本的控件都可以配置为以本地处理模式或远程处理模式运行。配置为何种处理模式将影响有关报表从设计到部署的所有方面。

l  “本地处理模式”是指 ReportViewer 控件在客户端应用程序中处理报表。所有报表都是使用应用程序提供的数据作为本地过程处理的。若要创建本地处理模式下使用的报表,需要使用 Visual Studio 中的报表项目模板。有关详细信息,请参阅将 ReportViewer 配置为进行本地处理。

l  “远程处理模式”是指由 SQL Server 2005 Reporting Services 报表服务器处理报表。在远程处理模式下,ReportViewer 控件用作查看器,显示已经在 Reporting Services 报表服务器上发布的预定义报表。从数据检索到报表呈现的所有操作都是在报表服务器上处理的。若要使用远程处理模式,则必须具有 SQL Server 2005 Reporting Services 的许可副本。有关详细信息,请参阅将 ReportViewer 配置为进行远程处理。

若要在应用程序中使用 ReportViewer 控件,则必须了解如何将控件添加到项目表单或网页中,如何配置控件来使用本地报表定义或服务器报表,如何更新数据源引用,以及如何在应用程序中测试和部署报表和控件。提供的演练有助于您学习这些关键技能。有关详细信息,请参阅示例和演练。

1.1.2.                 将Reportviewer配置为进行本地处理

您可以将 ReportViewer 控件配置为在本地处理报表,以使这些报表可以使用该控件提供的内置处理功能。如果配置 ReportViewer 控件进行本地处理,则所有的报表处理都在承载应用程序的计算机上进行。报表使用的所有数据必须从客户端应用程序提供的数据中检索。

报表设计期间,必须事先定义报表中使用的数据源。运行时,应用程序必须生成数据表或检索报表中使用的数据。本地处理的报表可以获取数据表和业务对象中的数据。根据您使用的是 Web 服务器控件还是 Windows 窗体控件,为本地处理的报表配置数据源的步骤有所不同。有关支持的数据源的详细信息,请参阅为 ReportViewer 报表创建数据源。

如何配置 ReportViewer 进行本地处理

若要配置 ReportViewer 进行本地处理,应选择或创建要用于 ReportViewer 控件的客户端报表定义 (.rdlc) 文件:

1.         将工具箱的“数据”部分中的 ReportViewer 控件添加到项目中的窗体或网页。

2.         在“ReportViewer 任务”智能标记面板中,单击“设计新报表”来创建您要使用的 .rdlc 文件。另外,您也可以选择“选择报表”来使用已是您项目的一部分的现有 .rdlc 文件。您只能选择一个报表。如果报表包含子报表或钻取链接,则文件列表中将会显示其他报表。

3.         单击“设计新报表”会将空的 .rdlc 文件添加到您的项目中,以图形设计模式打开空报表,并提供菜单和设计图面,以便您可以创建新报表。若要创建新报表,您必须已经定义要使用的数据集。有关创建 .rdlc 文件的详细信息,请参阅创建客户端报表定义 (.rdlc) 文件。

4.         生成或部署应用程序以验证报表是否正确地显示在应用程序中。

您可以使用演练来了解如何配置和使用本地处理模式的 ReportViewer 控件。所有演练都包括本地处理报表的控件配置。有关详细信息,请参阅 示例和演练。

何时使用本地处理

建议对于包括中小型号报表和数据集的应用程序使用本地处理模式。由于所有数据和报表的处理都是在客户端进行的,因此,如果您试图处理大型或复杂的报表和查询,性能可能会降低。如果您需要简单的部署策略,其中应用程序的所有部分都在同一台计算机上一起运行,也建议使用本地处理模式。

本地处理模式的功能不及远程处理强大,它适用于不需要报表服务器的独立应用程序。熟悉在远程 SQL Server Reporting Services 报表服务器上运行的服务器报表的用户应注意以下特别之处:

1.         客户端报表定义 (.rdlc) 中的报表参数不映射到查询参数。客户端报表定义中没有参数输入区域,它接受随后在查询中使用的值。

2.         客户端报表定义不包含嵌入式查询信息。您必须定义返回可供报表使用的数据的数据源。

3.         通过 RSClientPrint ActiveX 控件执行的基于浏览器的打印不适用于 ReportViewer Web 服务器控件中运行的客户端报表定义。打印控件是报表服务器功能集的一部分。

如果您受到这些特别之处的影响,您应该迁移到 Reporting Services 安装或编写提供您所需功能的应用程序代码。

1.1.3.                 添加和配置Reportviewer控件

1.         向项目中添加 Windows 窗体或网页。

2.         在图形设计模式中,将工具箱中的 ReportViewer 控件拖至窗体或网页。ReportViewer 控件位于工具箱的“数据”组中。控件包括“ReportViewer 任务”智能标记面板,这样您可以立即选择报表。

3.         在“ReportViewer 任务”智能标记面板中,选择任务以添加报表并配置控件。指定报表确定将控件配置为本地处理还是远程处理。

l  单击“设计新报表”启动报表设计器,并在您的应用程序中创建报表定义 (.rdlc) 文件。可以在您的应用程序中创建在客户端本地处理的新报表。若要了解有关创建报表的详细信息,请参阅创建客户端报表定义 (.rdlc) 文件。

l  使用“选择报表”来选择现有报表定义。您可以选择在项目中定义的本地报表定义 (.rdlc) 文件,也可以选择“服务器报表”来选择在 SQL Server 2005 Reporting Services 报表服务器上发布的报表。

l  选择服务器报表将控件配置为远程处理。若要选择服务器报表,必须知道报表服务器 URL 和报表的路径。报表路径必须以正斜杠 ( / ) 开头。若要运行报表,必须对报表服务器具有权限才能访问报表。如果不知道 URL 或报表路径,请咨询报表服务器管理员。有关服务器报表的详细信息,请参阅将 ReportViewer 配置为进行远程处理。

l  选择现有的报表定义 (.rdlc) 文件将控件配置为本地处理。选择报表时,必须选择 .rdlc 文件;即使您的项目中包含 .rdl 文件,也不能指定 .rdl 文件。如果要使用 .rdl 文件,必须对其进行转换。有关详细信息,请参阅创建客户端报表定义 (.rdlc) 文件和转换 RDL 文件和 RDLC 文件。

l  单击“在父容器中停靠”展开 ReportViewer 控件的视图图面,以便它使用窗体或页面中所有可用空间。此选项可用于 Windows 窗体控件。

l  单击“重新绑定数据源”更新报表中使用的数据表和业务对象的数据源绑定。此选项在为控件选择报表之后可用。如果修改报表数据源,或在图形报表设计环境之外修改数据绑定报表项(例如,直接编辑 XML),则需要重新绑定数据源。

4.         选择 ReportViewer 控件并打开“属性”窗口。

5.         对 ReportViewer 控件设置属性以确定视图区域的可见性和可用性。可使用参考文档了解每种属性。有关详细信息,请参阅 ReportViewer 属性。若要了解 ReportViewer 工具栏,请参阅配置并使用 ReportViewer 工具栏。

6.         生成或部署应用程序以在窗体或页面中预览报表。

1.1.4.                 创建客户端报表定义(.rdlc)文件

ReportViewer 控件支持本地处理模式,该模式允许用户使用控件的内置处理功能运行客户端报表定义 (.rdlc) 文件。可以容易地在应用程序项目中创建以本地处理模式运行的报表。创建这种报表的方法有两种:

l  可以向应用程序项目中添加报表项。从“项目”菜单中选择“添加新项”时,可以选择“报表”模板,从空白报表中生成报表布局。

l  可以在配置 ReportViewer 控件时,单击“设计新报表”。即打开一个空白报表。

如何创建和预览本地报表:

1.         在 Microsoft Visual Studio 2005 中,打开应用程序项目或网站。

2.         创建要使用的数据源。可以使用项目中可用的数据集中定义的数据表或业务对象。有关详细信息,请参阅为 ReportViewer 报表创建数据源。

3.         创建要在项目中使用的报表定义 (.rdlc) 文件。

4.         通过将工具箱中的表、文本框、矩阵、列表或图表添加到空白报表来定义报表布局。这些项称为“数据区域”。数据区域绑定到数据源。具体来说,就是将数据区域中的每个单元映射到数据源中的字段。有关详细信息,请参阅向 ReportViewer 报表添加数据区域。

5.         通过添加样式、格式设置、图像、边框、页眉、页脚、排序及其他报表功能来完成报表。有关详细信息,请参阅定义报表布局。

6.         选择将包含控件的窗体或页面。

7.         在图形设计模式中,将 ReportViewer 控件添加到网页或窗体。ReportViewer 控件位于工具箱的“数据”部分中。有关详细信息,请参阅添加和配置 ReportViewer 控件。

8.         在页面或窗体中调整控件的大小和位置。

9.         在“ReportViewer 任务”智能标记面板中,选择创建的客户端报表定义 (.rdlc) 文件来将报表绑定到控件。有关打开智能标记面板的详细信息,请参阅使用“ReportViewer 任务”智能标记面板。

若要预览报表,可以生成或部署应用程序。只能通过在 ReportViewer 控件中运行报表对其进行预览。没有只是针对 .rdlc 文件的单独预览模式。请注意,您可以随时打开和编辑报表定义,然后生成或部署应用程序来检查结果。

向项目添加新的报表项:

l  向项目添加新的报表项时,会创建空白报表,并向项目添加 Report.rdlc 文件。报表定义以图形设计模式打开。报表对象命名空间添加到项目中,可用的报表控件添加到工具箱中。

向报表添加报表项:

可以轻松创建简单的报表,方法是将报表项(例如,文本框、表、图表和图像)拖至报表设计图面,并对那些项设置属性。

l  较复杂的报表可能包括用于自定义报表输出的参数和表达式。例如,若要获得某种股票的市场分析报表,必须向报表中添加参数才能指定股票代码。您可以在您的应用程序中提供一个用户界面,用于从用户那里搜集参数值。参数可以传递到查询,以便更准确地指定数据选择条件;也可以用于筛选结果集,以便在报表中仅显示部分结果集。可以通过您的应用程序预定义参数值并传入;也可以在执行报表之前由用户指定参数值。

l  表达式必须使用 Microsoft Visual Basic 编写,用于聚合数据或执行条件格式设置。报表还可以包含自定义代码。您可以在报表中嵌入自定义代码,也可以对作为应用程序一部分的自定义程序集调用方法。与表达式不同,自定义代码可采用 Visual Basic 以外的其他语言编写。

1.1.5.                 部署报表和Reportviewer控件

您可以将报表和 ReportViewer 控件作为应用程序的一部分自由发布。根据控件类型以及报表是配置为本地处理还是远程处理,部署要求会有很大不同。在同一个应用程序中,既可以部署本地处理的报表,也可以部署远程处理的报表。

重新发布 ReportViewer 控件

可重新发布的 ReportViewer 控件是一个名为 ReportViewer.exe 的自解压缩文件,其中包括一个 .msi 文件以及其他文件。您可以在以下位置找到 ReportViewer.exe 文件:C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/Report Viewer/ReportViewer.exe。

您所使用控件的类型决定运行 ReportViewer.exe 的位置。

l  如果使用 ASP.NET 应用程序部署控件,则必须在部署计算机上运行 ReportViewer.exe。

l  如果使用 Windows 窗体应用程序部署控件,也必须在部署计算机上运行 ReportViewer.exe。您可以使用引导程序来自动完成此步骤:

1.         打开项目属性页。

2.         单击“发布”,再单击“必备组件”。

3.         选中“Microsoft Visual Studio 2005 报表查看器”,然后单击“确定”。

4.         发布应用程序。

在安装应用程序时,会在本地计算机上进行检查,以确定是否已安装 ReportViewer。如果未安装,安装程序将安装它。

部署报表查看器 Web 服务器控件的注意事项

在 Web 场中部署 ASP.NET 应用程序需要进行其他配置,以确保在整个场中维护视图状态。如果是在 Web 场环境中部署 ReportViewer Web 服务器控件,则应在应用程序的 Web.config 文件中指定 machineKey 元素。有关详细信息,请参阅 ReportViewer 的 Web.config 设置。

必须注意,在 ReportViewer Web 服务器控件中处理的报表对浏览器有要求。浏览器兼容性问题会影响某些种类的报表功能的可用性。有关详细信息,请参阅 ReportViewer Web 服务器控件的浏览器支持。

分发报表

除非在运行时动态生成客户端报表定义 (.rdlc) 文件,否则本地处理的报表将以 .rdlc 文件存储在文件系统上,并且必须与应用程序一起提供。这些文件可以安装在磁盘驱动器上,或者编译到应用程序可执行文件中。

在远程服务器上处理的报表将存储在 Microsoft SQL Server 2005 Reporting Services 报表服务器上。应用程序中不包含任何报表文件,因为报表是远程处理的,并且本地系统中不存在报表。若要部署在报表服务器上发布的报表,必须提供对报表服务器进行访问的权限,并确保应用程序用户有权查看该服务器上的报表。部署服务器报表需要了解报表服务器所使用的身份验证扩展插件,以及提供内容访问权限和操作权限的、基于角色的身份验证模式。有关详细信息,请参阅服务器报表的部署注意事项。

1.1.6.                 为Reportviewer创建数据源

如果您将 ReportViewer 控件配置为以本地处理模式运行,则客户端应用程序必须提供报表中包含的所有数据。在将数据用于报表之前,必须对数据进行完全处理。若要向报表提供数据,请在项目中定义指向数据源的数据连接。支持的数据源包括:

l  自定义业务对象

l  ADO.NET DataTable

只要报表可以作为 ADO.NET DataTable 或业务对象的可枚举集合来提供,该报表就可以使用任意源中的数据。

如何为 ReportViewer 报表添加数据源

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

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

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

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

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

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

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

l  演练:在本地处理模式下将数据库数据源与 ReportViewer Web 服务器控件一起使用

l  演练:在本地处理模式下将业务对象数据源与 ReportViewer Web 服务器控件一起使用

使用业务对象

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

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

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

使用数据表

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

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

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

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

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

1.1.7.                 演练:在本地处理模式下将数据库数据源与ReportViewer Web服务器控件一起使用

本演练显示了如何为 Microsoft Visual Studio 2005 ASP.NET 网站创建报表,以及如何向网页添加 ReportViewer 控件,以便用户可以查看该报表。

先决条件

本演练假定您可以连接到 Oracle DataBase 实例,并且已建立EMPLOYEE_TABLE_2

表。您还必须对运行 Microsoft Internet Information Services (IIS) 5.0 版或更高版本的服务器具有访问权限,并具有创建 ASP.NET 网页的权限。

EMPLOYEE_TABLE_2建表

[c-sharp] view plain copy print ?
  1. create table EMPLOYEE_TABLE_2 
  2. EMPLOYEE_ID    NUMBER, 
  3. EMPLOYEE_NAME  VARCHAR2(20), 
  4. AGE            NUMBER, 
  5. DEPARTMENT_ID  NUMBER, 
  6. PROJECT_ID     NUMBER, 
  7. LOGIN_ID       VARCHAR2(20), 
  8. LOGIN_PASSWORD VARCHAR2(20) 
  9. tablespace USERS 
  10. pctfree 10 
  11. initrans 1 
  12. maxtrans 255 
  13. storage 
  14. initial 64K 
  15. minextents 1 
  16. maxextents unlimited 
  17.   ); 
create table EMPLOYEE_TABLE_2(EMPLOYEE_ID NUMBER,EMPLOYEE_NAME VARCHAR2(20),AGE NUMBER,DEPARTMENT_ID NUMBER,PROJECT_ID NUMBER,LOGIN_ID VARCHAR2(20),LOGIN_PASSWORD VARCHAR2(20))tablespace USERSpctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited );

在您的计算机上执行以下步骤,以使用 Visual Studio 2008 模板创建含有配置为查看您所创建报表的 ReportViewer 控件的 ASP.NET 网页。常规过程如下:

1.         创建新的网站。

2.         通过添加 DataSet 来定义数据连接和 DataTable。

3.         设计报表。

4.         将 ReportViewer 控件添加到应用程序。

5.         编译和运行应用程序。

对于本示例,在 Microsoft Visual C# 中创建应用程序。

创建新的网站

1.         在“文件”菜单中,指向“新建”,选择“网站”。

ASP.NET服务器控件使用之Reportviewer 报表_第1张图片

2.         在“新建网站”对话框中,选择“ASP.NET 网站”。

3.         在“语言”列表中,选择 Visual C#,再单击“确定”。

4.         在“位置”框中,保留选定的默认 HTTP,然后输入网站根目录的位置,使用“浏览”导航及创建新的文件夹(如果需要)。单击“确定”。

5.         网站项目将打开,并显示 Default.aspx 网页。

6.         在“查看”菜单上,选择“设计器”。

现在您就可以修改网站的默认页。

通过添加数据集来定义数据连接和 DataTable

1.           在web.config中配置数据库连接

1)         什么是web.config

可扩展的基础结构是   ASP.NET   配置系统的一大特色,该基础结构使您可以在最初部署   ASP.NET   应用程序时定义配置设置,以便可以随时添加或修改这些配置设置,同时对运作着的   Web   应用程序和服务器产生的影响也将被减至最小。

2)         配置连接

在web.config的<configuration></configuration>下加上

[c-sharp] view plain copy print ?
  1. <connectionStrings> 
  2. <add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/> 
  3. </connectionStrings> 
<connectionStrings><add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/></connectionStrings>

其中Data Source是指tns中的Host String, User ID是oracle登陆用户名,Password是oracle登陆密码。providerName是数据提供者。

2.         在服务器资源管理器中,右键单击网站项目(非解决方案节点),然后选择“添加新项”。

3.         在“添加新项”对话框中,单击“数据集”。提示您是否应将项添加到 App_Code 文件夹是,请单击“是”。这将把新的 XSD 文件 DataSet.xsd 添加到项目,打开数据集设计器,并调用 TableAdapter 配置向导。

ASP.NET服务器控件使用之Reportviewer 报表_第2张图片

4.         在“选择您的数据连接”页上,配置向导自动找到了Web.config中的连接,接受默认连接并点击下一步。

ASP.NET服务器控件使用之Reportviewer 报表_第3张图片

5.         在“选择命令类型”页上,选择“使用 SQL 语句”。

ASP.NET服务器控件使用之Reportviewer 报表_第4张图片

6.         在“输入 SQL 语句”页上,输入以下SQL 查询以从 EMPLOYEE_TABLE_2表中中检索数据,再单击“完成”:

[c-sharp] view plain copy print ?
  1. SELECT t.employee_id, t.employee_name, t.age FROM employee_table_2 t 
SELECT t.employee_id, t.employee_name, t.age FROM employee_table_2 t

ASP.NET服务器控件使用之Reportviewer 报表_第5张图片

还可以单击“查询生成器”按钮,然后使用查询生成器创建查询,并使用“执行查询”按钮对其进行检查。

ASP.NET服务器控件使用之Reportviewer 报表_第6张图片

7.         在“选择要生成的方法”页上,接受默认值“填充 DataTable”(“方法名称”:Fill)和“返回 DataTable”(“方法名称”:GetData)。单击“下一步”。

ASP.NET服务器控件使用之Reportviewer 报表_第7张图片

8.         在“向导结果”页上,单击“完成”。

现在已完成将 ADO.NET DataTable 配置为报表的数据源。

忽略以下错误,点击确定。

ASP.NET服务器控件使用之Reportviewer 报表_第8张图片

9.         在 Visual Studio 的“数据集设计器”页上,应看到添加的 DataTable(默认名称为 DataTable1),其中列出了从查询定义得到的列。在“数据”菜单中,可以选择“预览数据”来检查查询结果。

http://p.blog.csdn.net/images/p_blog_csdn_net/huc87/EntryImages/20090324/12.jpg

设计报表

1.         在“网站”菜单上,选择“添加新项”。

1.         在“添加新项”对话框中,选择“报表”模板,输入报表文件的名称,再单击“添加”。这将创建报表定义文件(默认为 Report.rdlc),启动报表设计器,并在左窗格中显示“网站数据源”窗口。如果看不到“网站数据源”选项卡,请从“数据”菜单中选择“显示数据源”。

2.         显示工具箱,将“报表项”组中的“表”拖至报表设计图面上。

表控件设计分三行,分别是表头,详细信息,表尾。表头是指报表的列字段,详细信息是绑定的列,既报表每列的数据,表尾是报表的每列的底部数据

ASP.NET服务器控件使用之Reportviewer 报表_第9张图片

ASP.NET服务器控件使用之Reportviewer 报表_第10张图片

3.         在“网站数据源”窗口,展开 DataTable1 节点,直至看到查询得到的列,然后将 Employee_Id 拖至表中第一列的中间行。中间行是详细信息行。请注意,指定详细信息行时,标题行会自动填充。

4.         将“Employee_Name”字段拖至第二列的详细信息行,使其位于 Employee_Id 字段旁边。

5.         将 Age 字段拖至第三列的详细信息行,使其位于 Employee_Name 字段旁边。

http://p.blog.csdn.net/images/p_blog_csdn_net/huc87/EntryImages/20090324/17.jpg

6.         (可选)单击第一行左侧的“表格表头”按钮,并选择“粗体”格式样式。

7.         在“文件”菜单上,选择“全部保存”。

向应用程序添加 ReportViewer 控件

1.         在解决方案资源管理器中,右键单击 Default.aspx,选择“视图设计器”。

2.         将工具箱中的“数据”组中的 ReportViewer 控件拖至页面。

ASP.NET服务器控件使用之Reportviewer 报表_第11张图片

1)         如果“数据”节点下没有ReportViewer图标,则右击“数据”节点,选择“选择项”。

2)         在.NET Framework组件选项卡下选中命名空间为Microsoft.Reporting.WebForm下的ReportViewer,点击确定。

3.         通过单击网页上 ReportViewer 控件右上角中的三角形,打开“ReportViewer 任务”智能标记面板。在“选择报表”框中,选择 Report.rdlc 的完全限定文件名。

选择报表后,将自动创建报表中使用的数据源的实例。并生成代码以实例化每个 DataTable(及其 DataSet 容器)以及与报表中使用的每个数据源相对应的 ObjectDataSource 控件。此数据源控件自动进行配置。

    

注意

若要了解为什么 ASP.NET 使用 ObjectDataSource 控件而不使用 SqlDataSource 控件(即使基础数据源可能是数据库或某些其他强类型化的数据存储),请参阅为 ReportViewer 报表创建数据源。

编译和运行应用程序

1.         设置Default.aspx为起始页,按 Ctrl+F5 在不调试情况下运行页,或者按 F5 在运行页时进行调试。

在编译进程中包括对报表进行编译,并将发现的所有错误(例如,报表中使用的表达式中的语法错误)添加到“任务列表”。

网页显示在浏览器中。ReportViewer 控件显示报表。可以使用工具栏浏览报表、缩放及导出到 Excel。

2.         关闭浏览器。

1.1.8.                 演练:在本地处理模式下将业务对象数据源与ReportViewer Web服务器控件一起使用

本演练说明了如何在 Microsoft Visual Studio 2005 ASP.NET 应用程序中的报表中使用对象数据源。有关业务对象和对象数据源的详细信息,请参阅Binding to Business Objects。

请执行下列步骤向 Visual Studio ASP.NET 网站项目添加报表。本示例将用 Microsoft Visual C# 来创建应用程序。

创建新的 ASP.NET 网站项目

1.         在“文件”菜单中,指向“新建”,然后选择“网站”。

2.         在“新建网站”对话框中,从“语言”下拉列表中选择 Visual C#,并选择 ASP.NET 网站模板。

3.         在“位置”中,选择 HTTP 并键入网站的 URL。默认的 URL 为 http://localhost/WebSite。改为http://localhost/ReportViewerTest,单击“确定”。

创建要用作数据源的业务对象。

1.         在解决方案资源管理器中选择项目网站(以“http://”开头)。右键单击并选择“添加新项”。

2.         在“添加新项”对话框中,选择“类”,键入 Employee.cs 作为文件名,然后单击“添加”。

3.         在询问“是否要将该类放在‘App_Code’文件夹中”的消息框中,选择“是”。新文件将被添加到项目中并在 Visual Studio 中自动打开。

http://p.blog.csdn.net/images/p_blog_csdn_net/huc87/EntryImages/20090324/27.jpg

4.         在Oracle数据库中事例创建表

[c-sharp] view plain copy print ?
  1. create table EMPLOYEE_TABLE_2 
  2.   EMPLOYEE_ID    NUMBER, 
  3.   EMPLOYEE_NAME  VARCHAR2(20), 
  4.   AGE            NUMBER, 
  5.   DEPARTMENT_ID  NUMBER, 
  6.   PROJECT_ID     NUMBER, 
  7.   LOGIN_ID       VARCHAR2(20), 
  8.   LOGIN_PASSWORD VARCHAR2(20) 
  9. tablespace USERS 
  10.   pctfree 10 
  11.   initrans 1 
  12.   maxtrans 255 
  13.   storage 
  14.   ( 
  15.     initial 64K 
  16.     minextents 1 
  17.     maxextents unlimited 
  18.   ); 
create table EMPLOYEE_TABLE_2( EMPLOYEE_ID NUMBER, EMPLOYEE_NAME VARCHAR2(20), AGE NUMBER, DEPARTMENT_ID NUMBER, PROJECT_ID NUMBER, LOGIN_ID VARCHAR2(20), LOGIN_PASSWORD VARCHAR2(20))tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited );

5.         在web.config中配置数据库连接

3)         什么是web.config

可扩展的基础结构是   ASP.NET   配置系统的一大特色,该基础结构使您可以在最初部署   ASP.NET   应用程序时定义配置设置,以便可以随时添加或修改这些配置设置,同时对运作着的   Web   应用程序和服务器产生的影响也将被减至最小。

4)         配置连接

在web.config的<configuration></configuration>下加上

[c-sharp] view plain copy print ?
  1. <connectionStrings> 
  2. <add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/> 
  3. </connectionStrings> 
<connectionStrings><add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/></connectionStrings>

其中Data Source是指tns中的Host String, User ID是oracle登陆用户名,Password是oracle登陆密码。providerName是数据提供者。

6.         添加对System.Data.OracleClient的引用

1)         右击网站项目,在弹出的选项卡下选择添加引用

ASP.NET服务器控件使用之Reportviewer 报表_第12张图片

2)         找到.net标签页下找到System.Data.OracleClient,单击确定。

7.         将 Employee.cs 的默认代码替换为以下代码:

[c-sharp] view plain copy print ?
  1. using System; 
  2. using System.Data; 
  3. using System.Data.OracleClient; 
  4. using System.Collections.Generic; 
  5. using System.Configuration; 
  6. using System.Linq; 
  7. using System.Web; 
  8. using System.Web.Security; 
  9. using System.Web.UI; 
  10. using System.Web.UI.HtmlControls; 
  11. using System.Web.UI.WebControls; 
  12. using System.Web.UI.WebControls.WebParts; 
  13. using System.Xml.Linq; 
  14. /// <summary> 
  15. ///employee 的摘要说明 
  16. ///created by 胡琛 17-Feb-09 
  17. /// </summary> 
  18. public class Employee 
  19.     public Employee() 
  20.     { 
  21.         // 
  22.         //TODO: 在此处添加构造函数逻辑 
  23.         // 
  24.     } 
  25.     public Employee(string employeeId, string employeeName, string employeeAge) 
  26.     { 
  27.         this.employeeId = employeeId; 
  28.         this.employeeName = employeeName; 
  29.         this.employeeAge = employeeAge; 
  30.     } 
  31.     private string employeeId; 
  32.     private string employeeName; 
  33.     private string employeeAge; 
  34.     public string EmployeeId 
  35.     { 
  36.         get 
  37.         { 
  38.             return employeeId; 
  39.         } 
  40.         set 
  41.         { 
  42.             employeeId = value; 
  43.         } 
  44.     } 
  45.     public string EmployeeName 
  46.     { 
  47.         get 
  48.         { 
  49.             return employeeName; 
  50.         } 
  51.         set 
  52.         { 
  53.             employeeName = value; 
  54.         } 
  55.     } 
  56.     public string EmployeeAge 
  57.     { 
  58.         get 
  59.         { 
  60.             return employeeAge; 
  61.         } 
  62.         set 
  63.         { 
  64.             employeeAge = value; 
  65.         } 
  66.     } 
  67.     public static List<Employee> GetEmployees() 
  68.     { 
  69.         OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
  70.         OracleCommand cmd = new OracleCommand(); 
  71.         cmd.CommandText = "select * from employee_table_2"; 
  72.         cmd.Connection = conn; 
  73.         conn.Open(); 
  74.         OracleDataReader reader = cmd.ExecuteReader(); 
  75.         List<Employee> list = new List<Employee>(); 
  76.         while (reader.Read()) 
  77.         { 
  78.             Employee employee = new Employee(reader.GetOracleNumber(0).ToString(), reader.GetOracleString(1).ToString(), reader.GetOracleNumber(2).ToString()); 
  79.             list.Add(employee); 
  80.         } 
  81.         reader.Close(); 
  82.         conn.Close(); 
  83.         return list; 
  84.     } 
using System;using System.Data;using System.Data.OracleClient;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq; /// <summary>///employee 的摘要说明///created by 胡琛 17-Feb-09/// </summary>public class Employee{ public Employee() { // //TODO: 在此处添加构造函数逻辑 // } public Employee(string employeeId, string employeeName, string employeeAge) { this.employeeId = employeeId; this.employeeName = employeeName; this.employeeAge = employeeAge; } private string employeeId; private string employeeName; private string employeeAge; public string EmployeeId { get { return employeeId; } set { employeeId = value; } } public string EmployeeName { get { return employeeName; } set { employeeName = value; } } public string EmployeeAge { get { return employeeAge; } set { employeeAge = value; } } public static List<Employee> GetEmployees() { OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); OracleCommand cmd = new OracleCommand(); cmd.CommandText = "select * from employee_table_2"; cmd.Connection = conn; conn.Open(); OracleDataReader reader = cmd.ExecuteReader(); List<Employee> list = new List<Employee>(); while (reader.Read()) { Employee employee = new Employee(reader.GetOracleNumber(0).ToString(), reader.GetOracleString(1).ToString(), reader.GetOracleNumber(2).ToString()); list.Add(employee); } reader.Close(); conn.Close(); return list; }}

8.         从“项目”菜单中,选择“生成解决方案”。这将为对象创建程序集,并在您向项目中添加报表后,使业务对象“Employee”显示在“网站数据源”窗口中。

向项目中添加报表

1.         请确保在解决方案资源管理器中选中了项目网站或某个项目项。

2.         右键单击项目网站并选择“添加新项”。

ASP.NET服务器控件使用之Reportviewer 报表_第13张图片

3.         在“添加新项”对话框中,选择“报表”。键入报表的名称,然后单击“添加”。该报表将被添加到项目中并在报表设计器中自动打开。报表的默认名称为 Report.rdlc。

检查“网站数据源”窗口

2.         单击“Report.rdlc 设计”选项卡。在左侧窗格中,单击“网站数据源”选项卡。如果看不到“网站数据源”选项卡,请从“数据”菜单中选择“显示数据源”。

3.         确认对象“Employee”及其3个公共属性“id”,“名称”和“年龄”都显示在“网站数据源”窗口中的层次结构中。

设计报表

1.         如果报表是以设计模式打开的,请打开工具箱。从工具箱中将某个表控件拖到报表上。该表控件将在一个选项卡式设计窗口中打开。

2.         表控件设计分三行,分别是表头,详细信息,表尾。表头是指报表的列字段,详细信息是绑定的列,既报表每列的数据,表尾是报表的每列的底部数据。

     ASP.NET服务器控件使用之Reportviewer 报表_第14张图片

3.         从“网站数据源”窗口,将“Employee”数据源中的“EmployeeId”字段拖到表的详细信息行的第一列中。详细信息行是中间行。请注意,当您指定详细信息行后,系统将自动填充标题行。

4.         将“EmployeeName”字段拖到详细信息行的第二列中,使其显示在“EmployeeId”字段的旁边。第三列EmployeeAge同上。(可选操作)通过单击左侧的表格表头图标并应用粗体样式来选择标题行。

    ASP.NET服务器控件使用之Reportviewer 报表_第15张图片

5.         若要向报表中添加标题,请打开工具箱并将一个文本框拖到报表上。将该文本框置于表上方。键入 Employee 作为报表名称。(可选操作)对文本应用字号和字体样式来突出标题。

向网页中添加 ReportViewer 控件

1.         通过在解决方案资源管理器中右键单击 Default.aspx,选择设计视图中的默认网页,然后选择“视图设计器”。

2.         打开工具箱。在工具箱中,展开“数据”节点并将 ReportViewer 图标拖到网页上。

3)         如果“数据”节点下没有ReportViewer图标,则右击“数据”节点,选择“选择项”。

4)         在.NET Framework组件选项卡下选中命名空间为Microsoft.Reporting.WebForm下的ReportViewer,点击确定。

3.         选择 ReportViewer 控件,并通过单击右上角的三角形打开智能标记面板。单击“选择报表”下拉列表并选择刚才设计的报表。默认情况下,名称为 c:/inetpub/wwwroot/ReportViewerTest/Report.rdlc。请注意,ObjectDataSource 控件直接显示在 ReportViewer 控件下面,并自动设置为检索 DataTable 的内容,就像通过数据表的 TableAdapter 组件所配置的那样。

ASP.NET服务器控件使用之Reportviewer 报表_第16张图片

运行应用程序

l  把Default.aspx设为起始页,按 F5 以边运行边调试,或按 CTRL + F5 以运行而不调试,然后查看报表。

ASP.NET服务器控件使用之Reportviewer 报表_第17张图片

你可能感兴趣的:(sql,String,server,服务器,Microsoft,asp.net,报表)