ASP.NETserver控件使用之Reportviewer 报表

1.       Reportviewer 报表

1.1.       Reportviewer控件

注:本教程附2个事例:

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

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

假设您已经对ReportViewer控件基础知识比較了解,能够直接參阅事例。

1.1.1.                 简单介绍

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

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

l  “本地处理模式”是指 ReportViewer 控件在client应用程序中处理报表。全部报表都是使用应用程序提供的数据作为本地过程处理的。若要创建本地处理模式下使用的报表,须要使用 Visual Studio 中的报表项目模板。有关具体信息,请參阅将 ReportViewer 配置为进行本地处理。

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

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

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

您能够将 ReportViewer 控件配置为在本地处理报表,以使这些报表能够使用该控件提供的内置处理功能。假设配置 ReportViewer 控件进行本地处理,则全部的报表处理都在承载应用程序的计算机上进行。报表使用的全部数据必须从client应用程序提供的数据中检索。

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

怎样配置 ReportViewer 进行本地处理

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

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

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

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

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

您能够使用演练来了解怎样配置和使用本地处理模式的 ReportViewer 控件。全部演练都包含本地处理报表的控件配置。有关具体信息,请參阅 演示样例和演练。

何时使用本地处理

建议对于包含中小型号报表和数据集的应用程序使用本地处理模式。因为全部数据和报表的处理都是在client进行的,因此,假设您试图处理大型或复杂的报表和查询,性能可能会减少。假设您须要简单的部署策略,当中应用程序的全部部分都在同一台计算机上一起执行,也建议使用本地处理模式。

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

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

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

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

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

1.1.3.                 加入和配置Reportviewer控件

1.         向项目中加入 Windows 窗口或网页。

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

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

l  单击“设计新报表”启动报表设计器,并在您的应用程序中创建报表定义 (.rdlc) 文件。能够在您的应用程序中创建在client本地处理的新报表。若要了解有关创建报表的具体信息,请參阅创建client报表定义 (.rdlc) 文件。

l  使用“选择报表”来选择现有报表定义。您能够选择在项目中定义的本地报表定义 (.rdlc) 文件,也能够选择“server报表”来选择在 SQL Server 2005 Reporting Services 报表server上公布的报表。

l  选择server报表将控件配置为远程处理。若要选择server报表,必须知道报表server URL 和报表的路径。报表路径必须以正斜杠 ( / ) 开头。若要执行报表,必须对报表server具有权限才干訪问报表。假设不知道 URL 或报表路径,请咨询报表server管理员。有关server报表的具体信息,请參阅将 ReportViewer 配置为进行远程处理。

l  选择现有的报表定义 (.rdlc) 文件将控件配置为本地处理。选择报表时,必须选择 .rdlc 文件;即使您的项目中包括 .rdl 文件,也不能指定 .rdl 文件。假设要使用 .rdl 文件,必须对其进行转换。有关具体信息,请參阅创建client报表定义 (.rdlc) 文件和转换 RDL 文件和 RDLC 文件。

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

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

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

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

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

1.1.4.                 创建client报表定义(.rdlc)文件

ReportViewer 控件支持本地处理模式,该模式同意用户使用控件的内置处理功能执行client报表定义 (.rdlc) 文件。能够easy地在应用程序项目中创建以本地处理模式执行的报表。创建这样的报表的方法有两种:

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

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

怎样创建和预览本地报表:

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

2.         创建要使用的数据源。能够使用项目中可用的数据集中定义的数据表或业务对象。有关具体信息,请參阅为 ReportViewer 报表创建数据源。

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

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

5.         通过加入样式、格式设置、图像、边框、页眉、页脚、排序及其它报表功能来完毕报表。有关具体信息,请參阅定义报表布局。

6.         选择将包括控件的窗口或页面。

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

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

9.         在“ReportViewer 任务”智能标记面板中,选择创建的client报表定义 (.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 server控件的注意事项

在 Web 场中部署 ASP.NET 应用程序须要进行其它配置,以确保在整个场中维护视图状态。假设是在 Web 场环境中部署 ReportViewer Web server控件,则应在应用程序的 Web.config 文件里指定 machineKey 元素。有关具体信息,请參阅 ReportViewer 的 Web.config 设置。

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

分发报表

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

在远程server上处理的报表将存储在 Microsoft SQL Server 2005 Reporting Services 报表server上。应用程序中不包括不论什么报表文件,由于报表是远程处理的,而且本地系统中不存在报表。若要部署在报表server上公布的报表,必须提供对报表server进行訪问的权限,并确保应用程序用户有权查看该server上的报表。部署server报表须要了解报表server所使用的身份验证扩展插件,以及提供内容訪问权限和操作权限的、基于角色的身份验证模式。有关具体信息,请參阅server报表的部署注意事项。

1.1.6.                 为Reportviewer创建数据源

假设您将 ReportViewer 控件配置为以本地处理模式执行,则client应用程序必须提供报表中包括的全部数据。在将数据用于报表之前,必须对数据进行全然处理。若要向报表提供数据,请在项目中定义指向数据源的数据连接。支持的数据源包括:

l  自己定义业务对象

l  ADO.NET DataTable

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

怎样为 ReportViewer 报表加入数据源

建议使用下列方法来设置数据源,以便可以在client报表定义中使用该数据源。

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

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

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

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

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

若要马上開始操作,请使用下列演练来了解怎样向项目中加入每种数据源:

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

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

使用业务对象

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

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

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

使用数据表

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

ReportViewer Web server控件定义数据源

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

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

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

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

本演练显示了怎样为 Microsoft Visual Studio 2005 ASP.NET 站点创建报表,以及怎样向网页加入 ReportViewer 控件,以便用户能够查看该报表。

 先决条件

本演练假定您能够连接到 Oracle DataBase 实例,而且已建立EMPLOYEE_TABLE_2

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

EMPLOYEE_TABLE_2建表

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

);

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

1.         创建新的站点。

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

3.         设计报表。

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

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

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

 创建新的站点

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   应用程序和server产生的影响也将被减至最小。

2)         配置连接

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

<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登陆username,Password是oracle登录password。providerName是数据提供者。

 

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

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

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

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

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

SELECT t.employee_id, t.employee_name, t.age FROM employee_table_2 t

还能够单击“查询生成器”button,然后使用查询生成器创建查询,并使用“运行查询”button对其进行检查。

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

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

如今已完毕将 ADO.NET DataTable 配置为报表的数据源。

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

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

 设计报表

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

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

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

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

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

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

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

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

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

 向应用程序加入 ReportViewer 控件

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

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

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 Webserver控件一起使用

本演练说明了怎样在 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 中自己主动打开。

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

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   应用程序和server产生的影响也将被减至最小。

4)         配置连接

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

<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登陆username,Password是oracle登录password。providerName是数据提供者。

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

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

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

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

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.         右键单击项目站点并选择“加入新项”。

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

 检查“站点数据源”窗体

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

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

 设计报表

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

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

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

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

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 组件所配置的那样。

 执行应用程序

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

ASP.NETserver控件使用之Reportviewer 报表

时间: 2024-10-13 07:28:23

ASP.NETserver控件使用之Reportviewer 报表的相关文章

介绍一个免费的具备数据显示/录入/更新/删除功能的asp.net控件

我不能说它比datagrid更强, 因为datagrid有很多深层次的东西可以发掘,但是我能说它比datagrid更易用,更实用,因为它已经轻松实现如下功能,同时,它是完全免费的,不需要注册,没有任何的功能限制. 1. 通过属性设置数据表的显示 2. 客户端数据排序 3. 各种字段类型的格式化显示 4. 所有数据表轻松实现内置的数据添加.更新.删除功能 5. 提供密码字段的支持并使用32位MD5编码 6. 添加.更新图象字段.链接文件字段时自动上传文件 7. 上传图片时可以自动生成缩略图 8.

Asp.net--GridView控件--(1)高亮显示当前所在行,(2)高亮显示单击行,(3)绑定数据库数据,(4)分页,(5)导出到excel表格,(6)首列插入序号

//本页代码中的DB类及方法在http://www.cnblogs.com/Deerjiadelu/p/7252769.html中能查询到 (1)Asp.net--GridView控件--高亮显示当前所在行 protected void gvquery_DataBound(object sender, GridViewRowEventArgs e) { //高亮显示光标所在行 if (e.Row.RowType == DataControlRowType.DataRow)//判断当前行是不是数据

Asp.Net控件的客户端命名

我们在用ASP.NET写出来的网页,用浏览器来查看生成的客户端代码的时候经常看到这样的代码:GridView1_ctl101_WebUserControl1_webuserControlButton,那么这个命名有什么规律,是怎么来的拉?本次我们使用Reflector查看.net的代码研究其中的规律. 我们的ASP.NET服务器端控件在生成客户端控件的时候一般有id 和name两个属性,这两个属性我们在服务器端可以通过ClientID和UniqueID来得到.以一个Button为例,用Refle

asp.net控件的异步刷新

需求:我们知道,asp.net控件中的button控件,默认是开启了自动回发的,而有时候,我们不想刷新整个界面,而只想局部刷新,可页面中又偏偏用到了.net button控件. 虽然我很讨厌.net控件,但有时候在系统对性能要求不高的情况下,为了偷懒,使用.net控件是无可厚非的. aspx页面代码(只写了关键代码):  <asp:Button ID="<span style="color:#FF0000;">btnSearch</span>&q

【ASP.net控件】DropDownList数据绑定一个小bug

绑定数据出现这种情况,明明在第一项插入了一条数据,却始终在DropDownList中没有显示出来. 代码如下: if (!IsPostBack) { //绑定城市 DataTable dtCity = new HighSearch().GetCitySelect(); DropDownList1.DataSource = dtCity; DropDownList1.DataValueField = "citycode"; DropDownList1.DataTextField = &q

ASP.NET控件&lt;ASP:Button /&gt; html控件&lt;input type=&quot;button&quot;&gt;区别联系

ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样的东西 服务器只认识input,我们可以直接写input 但是asp是要把自己自动翻译成input再交给服务器的.其实是一样的东西 写写我看到的区别:                asp控件,直接可以用c#编程                input加上 runat=“server” 也被c#编程了 说白

asp.net控件开发基础(1)(转)原文更多内容

asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本书 Professional ASP.NET 2.0 Server Control and Component Development 现在还没有出版,但网站上放出了代码,所以正好下载过来学习一下. 我看过前几章代码,环环相扣,作者用不同的知识向我们展示同一个效果,所以循序渐进的学下来很有好处. 虽

asp.net控件循环变色

protected void lbtnState_Click(object sender, EventArgs e) { foreach (var item in div_state.Controls) { if (item is LinkButton) { (item as LinkButton).ForeColor = System.Drawing.Color.Black; if (sender is LinkButton) { LinkButton btn = (LinkButton)se

Asp.Net 控件radio 的简单使用

js: <script type="text/javascript"> function ok() { document.getElementById("txtPassword").disabled = false; } function no() { document.getElementById("txtPassword").disabled = true; } </script> 添加radio控件: <lab