分享
 
 
 

VS2005+Crystal Report开发Web应用

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

提要 本文试验将帮助你创建一个使用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”语句加入对装配集命名空间的引用声明。

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.Shared;

· 在这个类中,添加一个新的private型且无返回值的助理方法ConfigureCrystalReports()。

private void ConfigureCrystalReports()

{}

· ConfigureCrystalReports()是一个助理方法—它负责在运行时刻与报告交互。它还负责以编程方式与报告进行交互。为了正确地配置CrystalReportViewer,必须从中Page_Init()调用它。

· 使用显示的适当语法添加Page_Init事件处理器。

private void Page_Init(object sender, EventArgs e)

{}

· 在Visual Studio 2005的一个C# Web表单中,在code-behind类中的Page_Init事件处理器是被自动地依附到Init事件的。这个事件处理器签名必须正确匹配以便进行调用。

· 最后,在Page_Init事件处理器中,加入对ConfigureCrystalReports()助理方法的调用。

ConfigureCrystalReports();

· 从文件菜单下,点击“Save All”。

· 现在,你已经准备好创建你的定制股票市场信息类了。

四、 练习2:创建一个定制的股票市场信息

说明 在本练习中,你要创建一个定制的类来保存股票市场信息。这个类将用于填充一个对象集合。

详细步骤

· 在Solution Explorer中,右击粗体的网站名,然后点击“Add New Item”。

· 然后,出现“Add New Item ”对话框。

· 在Visual Studio“Installed Templates”域中,选择“Class”。

· 在Name字段中,输入Stock,然后点击Add。

· 在随后出现的对话框中点击Yes。

· 在Visual Studio 2005中,所有的类必须被放置到一个App Code文件夹下,如果要使用它们的话。当你点击Add按钮时,将出现一个警告对话框问你是否想把你的类放到这个App_Code文件夹下。

· 本文中的Stock类必须被设置为public类,以便当你创建报告时存取它。请一定要确保你创建的类是public型。

public class Stock

{

public Stock()

{}

}

· 在这个类中,加入三个private字段。

private string _symbol;

private double _price;

private int _volume;

· 然后,你将把三个public读/写属性加入以封装这三个private字段。

· 创建一个新的属性,命名为Symbol。

public string Symbol

{

get

{

return _symbol;

}

set

{

_symbol = value;

}

}

· 创建一个新的属性,命名为Price。

public double Price

{

get

{

return _price;

}

set

{

_price = value;

}

}

· 创建一个新的属性,命名为Volume。

public int Volume

{

get

{

return _volume;

}

set

{

_volume = value;

}

}

· 最后,创建一个新的构造器,它使用三个public属性作为参数。

public Stock (String symbol, int volume, double price)

{

_symbol = symbol;

_volume = volume;

_price = price;

}

· 从Build菜单下,点击“Build Website”。

· 如果你有任何构建错误现在就修改它们。

· 现在,你已经准备好从内置的Crystal Report Designer中存取这个对象了。

五、 练习3:创建一个水晶报表

说明 在本练习中,你将在内置的Crystal Report Designer中创建一个新的Crystal report,然后把这个报告绑定到Stock对象。

详细步骤

· 右击网站名并且点击“Add New Item”。

· 在“Add New Item” 对话框中,选择“Crystal Report”。

· 在Name字段中,输入StockObjects.rpt,然后点击Add。

· 在“Crystal Reports Gallery”对话框中,点击OK。

· 在“Standard Report Creation Wizard”对话框中,展开“Project Data”及子结点“.NET Objects”。

· 将出现该工程中的一个类列表。

· 展开Stock类来观察一个可选择的子结点。

· 点击向右的箭头,以便把“Stock”类子结点移动到“Selected Tables”面板上。

· 点击Next。

· 展开Stock并且点击“>>”以便把所有的列移动到“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。

private ArrayList stockValues;

· 为ReportDocument报告包装类添加一个新的类级别的声明,变量名为stockObjectsReport。并把它设置为private型。

private ReportDocument StockObjectsReport;

· 在你在练习1创建的ConfigureCrystalReports()方法中,声明一个字符串变量,命名它为reportPath,并且把一个指向本地报告的运行时刻路径赋值给它。把本地报告文件的名字作为一个字符串参考传递给Server.MapPath()方法。这样以来,把本地报告映射到运行时刻文件路径。

String reportPath = Server.MapPath("StockObjects.rpt");

· 实例化ReportDocument类。

StockObjectsReport = new ReportDocument();

· 在下一行中,调用ReportDocument实例的Load()方法,并且把reportPath字符串变量传递给它。

StockObjectsReport.Load(reportPath);

· 这个ReportDocument类是CrystalDecisions.CrystalReports。Engine命名空间的一个成员。你已经在“练习1: Web应用程序安装”中添加了对这个命名空间的声明(在C#中是使用“using”)。当你实例化ReportDocument并且加载一个报告时,你可以通过SDK来存取这个报告。

· 然后,把这个报告的数据源设置为“stockValues ArrayList”。

StockObjectsReport.SetDataSource(stockValues);

· 最后,把CrystalReportViewer的ReportSource属性绑定到ReportDocument实例。

crystalReportViewer.ReportSource = stockObjectsReport;

l. 现在,这个Stock对象报告被绑定到Crystal Report Viewer并且页面显示正确的报告;然而,当前的报告被绑定到一个空数据源上,因此报告中没有要显示的信息。在下一步中,你将用样本数据以编程方式填充stockValues ArrayList。

2. 以编程方式填充一个对象集合。

3. 在这个任务中,你将把Session代码添加到ASPX code-behind类。如果在session中没有值,将会生成默认值。如果session中有值,它们将被赋值到stockValues ArrayList中。

· 在这个类中,添加一个新的public范围的不具有返回值的助理方法,命名为PopulateStockValuesArrayList()。

public void PopulateStockValuesArrayList()

{}

· 在PopulateStockValuesArrayList()方法中,在现有代码前,创建一个if/else条件块—它检查是否存在一个名为stockValues的Session对象。

if(Session["stockValues"] == null)

{}

else

{}

· 在这个If块中,实例化一个新的ArrayList()。

stockValues = new ArrayList();

· 然后,使用Stock类的重载构造器来创建和实例化Stock的三个实例。

Stock s1 = new Stock("AWRK",1200,28.47);

Stock s2 = new Stock("CTSO",800,128.69);

Stock s3 = new Stock("LTWR",1800,12.95);

· 把这三个实例添加到stockValues。

stockValues.Add(s1); stockValues.Add(s2); stockValues.Add(s3);

· 把更新的stockValues ArrayList添加到session中。

Session["stockValues"]=stockValues;

· 在Else块中,加入一行代码以便把session中的当前值赋给stockValues ArrayList。

stockValues = (ArrayList)Session["stockValues"];

· 最后,从ConfigureCrystalReports()方法中调用PopulateStockValuesArrayList()。

· 这应该是ConfigureCrystalReports()方法中被执行代码的第一行。

Po

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有