<span style="FONT-SIZE: 10pt">提要 本文试验将帮助你创建一个使用Crystal Report的Web应用程序—报告中的数据来源于一个对象集合,你将创建一个专门的类来保存股票市场数据。 一、 开发目标 结束本试验后,你将能够更好地: · 创建一个专门的类来保存股票市场值。 · 实例化这个类。 · 使用数据填充一个对象集合。 · 通过一个web表单动态地添加数据。 · 使用Crystal Report Designer熟练地创建一个水晶报表。 二、 内容说明 本实验将引导你创建一个Crystal Reports web应用程序—报告中的数据来源于一个对象集合。该应用程序是用Crystal Reports for Visual Studio 2005 Beta 2进行开发成功。 然后,你将创建一个专门的类来保存股票市场值,实例化该类并使用数据填充一个对象集合,并且通过一个web表单进一步动态地添加数据。然后,你将创建一个水晶报表,通过使用Crystal Report Designer控件—它连接到对象集合并且动态地生成一个图表和股票摘要信息。 三、 练习一:Web应用程序安装 说明 在本练习中,你将创建一个新的网站,并且应用标准设置来完成此练习。 详细步骤 1. 在Visual Studio中创建一个新的ASP.NET Web站点。 · 双击桌面上的Visual Studio 2005 Beta 2快捷方式。 · 点击“文件|新建|网站”。 · 在“新建网站”对话中,点击“ASP.NET 网站”。 · 在“位置”列表中,选择“文件系统”。 · 在“语言”列表中,选择“Visual C#”。 · 在“位置”文本域中,接受默认的路径和名称。 · 点击OK。 2. 添加Crystal Report Viewer 控件。 · 从Solution Explorer中,双击Default.aspx以打开该web表单。 · 点击在该表单底部的“设计”按钮来把Web表单改变到设计视图。 · 从工具栏中,展开Crystal Reports结点并且定位到CrystalReportViewer控件。 · 把CrystalReportViewer控件拖动到该Web表单。 · 如果“Smart Task”面板上的“CrystalReportViewer Tasks”被打开,则按下Esc键关闭它。 · “Smart Task”面板是Visual Studio 2005中的一个新特征—允许用较少的代码来创建工程。在这个选项卡中,你将使用一种编程方式,因此不必使用“Smart Task”面板。 · 点击Properties选项卡并且选择CrystalReportViewer。 · 从Properties窗口中,把ID属性设置为crystalReportViewer。 · 从文件菜单下,点击SaveAll。 3. 添加编程环境。 · 点击Solution Explorer选项卡。 · 在Solution Explorer中,右击Default.aspx并且点击“View Code”。 · 在类签名的上面,使用“using”语句加入对装配集命名空间的引用声明。 · ConfigureCrystalReports()是一个助理方法—它负责在运行时刻与报告交互。它还负责以编程方式与报告进行交互。为了正确地配置CrystalReportViewer,必须从中Page_Init()调用它。 · 使用显示的适当语法添加Page_Init事件处理器。<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e1e1e1" border="1">
<tr>
<td style="FONT-SIZE: 10pt">private void Page_Init(object sender, EventArgs e){}</td>
</tr></table>
<span style="FONT-SIZE: 10pt"> · 在Visual Stu
dio 2005的一个C# Web表单中,在code-behind类中的Page_Init事件处理器是被
自动地依附到Init事件的。这个事件处理器签名必须正确匹配以便进行
调用。 · 最后,在Page_Init事件处理器中,加入对ConfigureCrystalReports()助理
方法的
调用。<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e1e1e1" border="1">
<tr>
<td style="FONT-SIZE: 10pt">ConfigureCrystalReports();</td>
</tr></table>
<p style="FONT-SIZE: 10pt"> · 从
文件菜单下,点击“Save All”。 · 现在,你已经准备好创建你的定制股票市场信息类了。
四、 练习2:创建一个定制的股票市场信息 说明 在本练习中,你要创建一个定制的类来保存股票市场信息。这个类将用于填充一个对象集合。详细步骤 · 在Solution Explorer中,右击粗体的网站名,然后点击“Add New Item”。
<p style="FONT-SIZE: 10pt"> · 然后,出现“Add New Item ”对话框。 · 在Visual Stu
dio“Installed Templates”域中,选择“Class”。 · 在Name字段中,输入Stock,然后点击Add。 · 在随后出现的对话框中点击Yes。 · 在Visual Stu
dio 2005中,所有的类必须被放置到一个App Code
文件夹下,如果要使用它们的话。当你点击Add按钮时,将出现一个警告对话框问你是否想把你的类放到这个App_Code
文件夹下。 · 本文中的Stock类必须被设置为public类,以便当你创建报告时存取它。请一定要确保你创建的类是public型。
<p style="FONT-SIZE: 10pt">
属性加入以封装这三个private字段。 · 创建一个新的
属性,命名为Symbol。
属性,命名为Price。
属性,命名为Volume。
属性作为参数。
菜单下,点击“Build Website”。 · 如果你有任何构建
错误现在就
修改它们。 · 现在,你已经准备好从内置的Crystal Report Designer中存取这个对象了。
五、 练习3:创建一个水晶报表 说明 在本练习中,你将在内置的Crystal Report Designer中创建一个新的Crystal report,然后把这个报告绑定到Stock对象。 详细步骤 · 右击网站名并且点击“Add New Item”。
>”以便把所有的列移动到“Fields to Display”面板上。 · 点击Next。 · 选择Symbol并且点击向右的箭头来把它移动到“Group By”面板上。 · 点击Finish。 六、 练习4:把你的水晶报表绑定到Crystal Report Viewer 说明 在这个练习中,你将把Stock对象报告绑定到Crystal Report Viewer,把报告的数据源设置为一个对象集合,并且用编程方式来填充一个对象集合。 详细步骤 1. 把报告绑定到Crystal Report Viewer。 · 切换到默认的Code-Behind类,Default.aspx.cs。 · 在类签名之上,加入对命名空间System.Collections的引用。using System.Collections; · 这个参考使你能够存取ArrayList类,而ArrayList实现了ICollection。这使得ArrayList成为用来构建一个为Crystal Reports所识别的对象集合的若干类的类型之一。 · 添加一个新的类级别的ArrayList,命名为stockValues。
添加一个新的类级别的声明,变量名为stockObjectsReport。并把它设置为private型。
方法中,声明一个字符串变量,命名它为reportPath,并且把一个指向本地报告的运行时刻路径赋值给它。把本地报告
文件的名字作为一个字符串参考传递给Server.MapPath()
方法。这样以来,把本地报告映射到运行时刻
文件路径。
调用ReportDocument实例的Load()
方法,并且把reportPath字符串变量传递给它。
添加了对这个命名空间的声明(在C#中是使用“using”)。当你实例化ReportDocument并且加载一个报告时,你可以通过SDK来存取这个报告。 · 然后,把这个报告的数据源设置为“stockValues ArrayList”。
属性绑定到ReportDocument实例。
页面
显示正确的报告;然而,当前的报告被绑定到一个空数据源上,因此报告中没有要
显示的信息。在下一步中,你将用样本数据以编程方式填充stockValues ArrayList。 2. 以编程方式填充一个对象集合。 3. 在这个任务中,你将把Session
代码添加到ASPX code-behind类。如果在session中没有值,将会
生成默认值。如果session中有值,它们将被赋值到stockValues ArrayList中。 · 在这个类中,
添加一个新的public范围的不具有返回值的助理
方法,命名为PopulateStockValuesArrayList()。
方法中,在现有
代码前,创建一个if/else条件块—它检查是否存在一个名为stockValues的Session对象。
添加到stockValues。
添加到session中。
代码以便把session中的当前值赋给stockValues ArrayList。
方法中
调用PopulateStockValuesArrayList()。 · 这应该是ConfigureCrystalReports()
方法中被执行
代码的第一行。
菜单下,点击Build Solution。 · 如果你有任何构建
错误现在就
修改它们。 · 从Debug
菜单下,点击“Start Debugging”。 · 如果这是你启动调试器的第一次,那么将出现一个对话框告诉你必须
修改Web.config
文件。点击OK按钮以启动调试
功能。 · Default.aspx
页面连同三个缺省值加载到你的浏览器中。 ·
关闭Internet Explorer窗口。
七、 练习5:把数据动态地添加到股票报告上 说明 在上一个练习中,你用编程方式填充对象集合。在本练习中,你将学习如何动态地从你的网站把信息
添加到你的数据源。该信息能够在你的报表中得到
自动更新。 详细步骤
添加控件到Web表单。 · 在Design视图中打开Default.aspx文件。 · 为了在Design视图中打开一个ASPX页面,首先打开文件,然后点击在该表单底部的Design按钮。 · 点击CrystalReportViewer控件来选择它。 · 按下左箭头键,以便出现闪烁的光标,并且按回车键从视图中往下移动四次。 · 从工具箱中,把一个TextBox控件拖动到Web表单。 · 从Property菜单下,把ID设置为symbol。 · 把第二个TextBox控件拖动到Web表单。把这第二个TextBox放到第一个下面。 · 从Property菜单下,把ID设置为price。 · 把第三个TextBox控件拖动到Web表单。把这第三个TextBox控件放到第二个下面。 · 从Property菜单下,把ID设置为volume。 · 现在,你可以发现把文本添加在每一个文本框旁边极有助于标识哪个控件相应于哪个参数。 · 然后,从工具箱中,把一个按钮控件拖动Web表单上。把该按钮放到这三个TextBox控件下。 · 从Property菜单下,把该按钮的ID设置为addStockInformation。 · 把该按钮的Text设置为“Add Stock Information”。 · 最后,双击“Add Stock Information” 按钮。 · 双击按钮控件将打开Code-behind类并且自动生成一个addStockInformation_click()事件处理器。 2. 把信息添加到集合。 · 在addStockInformation_click()事件处理器中,创建并且实例化一个新的Stock对象。
方法中,创建一个try/catch块。
代码来把Web表单中的String值转换为numerical值。try/catch语句有助于保护你的web应用程序免于崩溃—在类型转换出现
错误匹配期间。 · 在Try块中,把在Web表单中的symbol字段的值赋值到Stock对象的Symbol
属性。temp.Symbol = symbol.Text; · 在下一行中,把在Web表单中的price字段的值赋值到Stock对象的Price
属性。注意,在赋值之前,要把Web表单中的这个值转化为一个Double。
属性。注意,在赋值之前,要把Web表单中的这个值转化为一个整数。
添加到stockValues ArrayList。
调用ConfigureCrystalReports()
方法。这将把报告重新绑定到这个更新过的stockValues—一个对象集合。
菜单下,点击“Build Solution”。 · 如果你遇到任何构建
错误,则现在就
修改。 · 从Debug
菜单下,点击“Start Debugging”。 · 如果没有出现构建
错误,Default.aspx
页面将使用三个缺省值加载到你的浏览器。为了
添加其它值,适当地填充文本框并且点击“Add Stock Information”按钮。报告将会被动态地更新。 · 当你运行你的网站时,报告将装载到你的浏览器窗口中—使用三个缺省值(你是在练习4中以编程方式
添加的)。在报告上面共有三个Text
Box控件和一个按钮控件。使用这些控件,你可以动态地更新你的一个对象集合,并且看到这一更新的结果会反映到你的报告中。 ·
关闭Internet Explorer窗口。
八、 练习6:在报告中添加图表和摘要信息 说明 至此,你已经拥有一个全
功能的网站,它将
显示一个基于一个对象集合的水晶报表。该
站点将
显示以编程方式输入到一个对象集合中的信息,以及在运行时刻被动态地
添加的信息。 在这个练习中,你将
添加两个图表,一个calculated字段和
摘要信息。 详细步骤 1. 把一个图表
添加到报告中。 · 从solution explorer下,打开StockObjects.rpt。 · 从Crystal Reports
菜单下,选择Insert,并且点击Chart。 · 在“Chart Expert”对话框中,选择一个Pie图。 · 选择Data选项卡。 · 选择Stock.Symbol并且点击最右方向箭头以把Stock.Symbol字段移动到“On Change Of”字段。 · 选择Stock.Volume并且点击最右方向箭头以把Stock.Volume字段移动到Show Value(s)字段。 · 点击OK。 · 创建一个新的“Report Header”节,并且把一个图表对象
添加到这一节中。 · 从Debug
菜单下,点击“Start Debugging”。 · 如果不出现构建
错误,那么Default.aspx
页面将加载到你的浏览器中。 ·
关闭Internet Explorer窗口。 2.
添加一个基于一个formula字段的图表。在这一节中,你将创建一个
显示合计信息的图表。首先,你将创建一个公式以计算一个特定的持股值,然后创建一个饼图—它
显示你的所有持股值的比例值。 · 从Crystal Reports
菜单下,选择Report,并且点击“Formula Workshop”。 · 在“Formula Workshop”对话框中,选择“Formula Fields”。 · 点击New按钮创建一个新公式。 · 在“Formula Name”对话框中,输入值。 · 点击“Use Editor”。 ·
添加代码以把price字段值与volume字段值相乘。
关闭。 · 从Crystal Reports
菜单下,选择Insert并且点击Chart。 · 在“Chart Expert”对话框下,选择一个Pie图。 · 点击Data选项卡。 · 选择Stock.Symbol并且点击最右方向箭头把Stock.Symbol字段移动到“On Change Of”字段。 · 选择Worth并且点击最右方向箭头把Worth公式移动到“Show Value(s)”字段。 · 点击Text选项卡。 · 在Title旁边,清除“Auto-text”复选框。 · 在Title字段中输入Worth/Symbol。 · 点击OK。 · 一个新的Report Header节被创建,并且有一个Chart对象被
添加到这一节上。 · 为了重新放置在一个水晶报表中的对象的位置,你可以用鼠标拖动之并把它们放在任何你想放置的位置。你可以使用在表单
底部的“Main Report Preview“按钮来
显示你的报告的一个预览。 3. 把Formula和Summary字段
添加到你的报告中。在这一节中,你
添加一个formula字段到你的报告,还有一个
摘要字段—它来计算你的portfolio的总值。 · 展开Field Explorer的“Formula Fields”结点。 · 把worth公式拖动到你的报告。把这个字段放到你的报告的节中。 · 如果“Field Explorer”不可见,从View
菜单下选择“Document Outline”。这个字段将
显示每一行的值。使用一个summary字段
显示你的portfolio的总值。 · 从“Crystal Reports”
菜单下,选择“Insert”,点击“Summary”。 · “Insert Summary”对话框出现。 · 从“Choose the Field to Summarize”字段下选择Worth公式。 · 从“Calculate this Summary”字段下选择“Sum”。 · 从“Summary Location”字段下选择“Grand Total”。 · 点击OK。 把一个
摘要字段
添加到报告中。 · 从“Debug”
菜单下,点击“Start Debugging”。 · 如果没有出现构建
错误,Default.aspx
页面将加载到你的浏览器。 ·
关闭Internet Explorer窗口。 4.
添加一个前面已经存在的报告。在这一节中,你将让你的Web应用程序使用一个位于你的
文件系统中的现有报告。 · 右击Solution Explorer中的StockObjects.rpt。 · 点击Delete。 · 点击弹出的对话框中的OK。 · 在Solution Explorer中,右击加粗的网站名,然后点击“Add Existing Item”。 · 在“Add Existing Item”对话框中,导航到“C:\Microsoft Hands-On-Lab\HOL-ILL05\Source\Excercises”,并选择StockObjects.rpt
文件。 · 点击Add。 · 从Debug
菜单下,点击“Start Debugging”。 · 如果没有出现构建
错误,那么Default.aspx page将加载到你的浏览器中并且
显示你的新报告。 ·
关闭Internet Explorer窗口。