连接到对象集合stock类.docx

上传人:b****5 文档编号:11796084 上传时间:2023-04-02 格式:DOCX 页数:12 大小:23KB
下载 相关 举报
连接到对象集合stock类.docx_第1页
第1页 / 共12页
连接到对象集合stock类.docx_第2页
第2页 / 共12页
连接到对象集合stock类.docx_第3页
第3页 / 共12页
连接到对象集合stock类.docx_第4页
第4页 / 共12页
连接到对象集合stock类.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

连接到对象集合stock类.docx

《连接到对象集合stock类.docx》由会员分享,可在线阅读,更多相关《连接到对象集合stock类.docx(12页珍藏版)》请在冰豆网上搜索。

连接到对象集合stock类.docx

连接到对象集合stock类

教程:

连接到对象集合

简介

在本教程中,将创建一个类,该类是对象集合中各个对象的类型。

该类将表示股票市场信息。

在生成Crystal报表时,将从报表向导访问该Stock类,非常像访问数据库表,但是不会将表列作为要显示的字段进行添加,而是添加类属性。

在首次显示报表时,报表是空的。

报表设计已完成,但没有可用的数据来填充报表。

然后,创建一个方法以实例化ArrayList,并将多个Stock实例添加到该ArrayList实例中。

每个Stock实例都会将其属性设置为唯一值。

然后,从该方法返回ArrayList实例。

将在设计时以编程方式添加该信息,然后在运行时再次动态地进行添加。

返回的ArrayList(即一个对象集合)会被赋给Crystal报表的SetDataSource属性。

当显示该报表时,对象集合中的每个对象都会在该报表中提供一个“详细信息”行。

示例代码

此教程附带VisualBasic和C#示例代码,这些代码显示了项目完成后的版本。

请按照本教程中的说明创建新项目或打开示例代码项目,以利用完成后的版本进行工作。

示例代码保存在按语言和项目类型分类的文件夹中。

各示例代码版本的文件夹名称如下:

∙C#网站:

CS_Web_Data_Objectcollection

∙VisualBasic网站:

VB_Web_Data_Objectcollection

欲知包含这些示例的文件夹的位置,请参见 “教程的示例代码目录”。

在此节中:

∙创建Stock类

∙将Crystal报表连接到Stock对象

∙将StockObjects报表实例化为非嵌入式报表并将其绑定到CrystalReportViewer控件

∙以编程方式填充对象集合

∙动态填充对象集合

∙附录:

增强报表

创建Stock类

其他版本

在本节中,您将创建Stock类。

Stock类包含一些专用字段,这些专用字段作为公用属性:

Symbol、Volume和Price。

1.在“解决方案资源管理器”中,右击以粗体显示的网站名称,然后单击“添加新项”。

2. 在“添加新项”对话框中:

a.在“VisualStudio已安装的模板”字段中,选择“类”。

b.在“名称”字段中,键入“Stock”,然后单击“添加”。

c.在出现的对话框中,单击“是”。

注意

在VisualStudio2005和更高版本中,如果类通常情况下是可使用的类,则必须将所有这些类放在 App_Code 文件夹中。

单击“添加”按钮时,将出现一个警告框,询问是否将类放在此 App_Code 文件夹中。

3.要在创建报表时访问Stock类,必须将其设置为公用作用域。

请确认您创建的类是公用类。

如果不是,请在类签名中添加公用修饰符,以为嵌入式CrystalReports设计器提供该类。

VB

PublicClassStock

EndClass

4.如果在VisualBasic中进行编码,请添加默认构造函数。

VB

SubNew()

EndSub

5.在类中添加三个专用字段。

VB

Private_symbolAsString

Private_volumeAsInteger

Private_priceAsDouble

6.创建一个名为Symbol的新属性。

VB

PublicPropertySymbol()AsString

Get

Return_symbol

EndGet

Set(ByValvalueAsString)

_symbol=value

EndSet

EndProperty

7.创建一个名为Price的新属性。

VB

PublicPropertyPrice()AsDouble

Get

Return_price

EndGet

Set(ByValvalueAsDouble)

_price=value

EndSet

EndProperty

8.创建一个名为Volume的新属性。

VB

PublicPropertyVolume()AsInteger

Get

Return_volume

EndGet

Set(ByValvalueAsInteger)

_volume=value

EndSet

EndProperty

9.最后,创建一个新的构造函数,它将这三个公用属性作为参数。

VB

SubNew(ByValsymbolAsString,ByValvolumeAsInteger,ByVal

priceAsDouble)

_symbol=symbol

_volume=volume

_price=price

EndSub

10. 从“生成”菜单中,单击“生成网站”。

将Crystal报表连接到Stock对象

在本节中,将在嵌入式CrystalReports设计器中创建一个新的Crystal报表,并将该报表连接到Stock对象。

1.右击项目名称,然后单击“添加新项”。

2.在“添加新项”对话框中,选择“Crystal报表”。

3.在“名称”字段中,输入“StockObjects.rpt”,然后单击“添加”。

4.在“CrystalReports库”对话框中,单击“确定”。

5. 在“标准报表创建向导”对话框中,展开“项目数据”和子节点“.NET对象”。

将出现项目中的类列表。

每个类都以项目命名空间为前缀。

6.展开“Stock”类以查看可选的子节点。

7.单击右箭头,将Stock类子节点移动到“选定的表”面板中,然后单击“下一步”。

8.展开“Stock”并单击“>>”,将所有列移动到“要显示的字段”面板中,然后单击“下一步”。

9.选择“Symbol”,单击右箭头以移动到“分组依据”面板,然后单击“完成”。

将StockObjects报表实例化为非嵌入式报表并将其绑定到CrystalReportViewer控件

在 “项目设置”中,您已经在Web或Windows窗体上放入了CrystalReportViewer控件。

在上一过程中,您为项目添加了一个StockObjects报表。

在本节中,将把StockObjects报表绑定到CrystalReport查看器,将报表的数据源设置为对象集合,并以编程方式填充该对象集合。

1.打开默认代码隐藏类 Default.aspx.cs 或 Default.aspx.vb。

2. 在类签名之上,在类顶部添加 "Imports"[VisualBasic] 或 "using"[C#] 声明,以引用 System.Collections 命名空间。

注意

通过此引用可访问 ArrayList 类。

ArrayList 实现 ICollection。

这会将 ArrayList 限定为几个类类型之一,可以使用这些类类型来生成CrystalReports可识别的对象集合。

3.VB

4.ImportsSystem.Collections

5. 添加一个新的类级 ArrayList,并将其命名为 stockValues。

VB

PrivatestockValuesAsArrayList

6. 使用变量名 stockObjectsReport 为ReportDocument报表包装类添加新的类级声明。

将其访问修饰符设置为private。

VB

PrivatestockObjectsReportAsReportDocument

7. 在 “项目设置”中创建的 ConfigureCrystalReports() 方法中,声明一个字符串变量,将其命名为 reportPath,然后将本地报表的运行时路径赋给它。

将本地报表文件的名称作为字符串参数传递给Server.MapPath() 方法。

这会在运行时将本地报表映射到该文件路径。

VB

DimreportPathAsString=Server.MapPath("StockObjects.rpt")

8. 添加两行并实例化 ReportDocument 类。

VB

stockObjectsReport=NewReportDocument()

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

注意

ReportDocument 类是 CrystalDecisions.CrystalReports.Engine 命名空间的成员。

在项目设置中为此命名空间添加了 "Imports"[VisualBasic] 或 "using"[C#] 声明。

在实例化 ReportDocument 并加载某个报表时,可通过SDK获取该报表的访问权限。

10.C#

11.VB

12.

13.stockObjectsReport.Load(reportPath)

14.

15.接下来,将该报表的数据源设置为 stockValuesArrayList。

VB

stockObjectsReport.SetDataSource(stockValues)

16. 最后,将 CrystalReportViewer 的 ReportSource 属性绑定到 ReportDocument 实例。

VB

myCrystalReportViewer.ReportSource=stockObjectsReport

现在,StockObjects报表已绑定到CrystalReport查看器,并且该页显示正确的报表;不过,该报表当前绑定到空的数据源,因此,该报表没有要显示的信息。

在下一节中,将使用示例数据以编程方式填充 stockValuesArrayList。

以编程方式填充对象集合

1.在“解决方案资源管理器”中右击Web窗体,然后单击“查看代码”。

2. 在类中,添加名为 PopulateStockValuesArrayList() 的新公共作用域帮助器方法(不带返回值)。

VB

PublicSubPopulateStockValuesArrayList()

EndSub

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

VB

If(Session("stockValues")IsNothing)Then

Else

EndIf

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

VB

stockValues=NewArrayList

5.接下来,使用Stock类的重载构造函数来创建并实例化三个Stock实例。

VB

Dims1AsStock=NewStock("AWRK",1200,28.47)

Dims2AsStock=NewStock("CTSO",800,128.69)

Dims3AsStock=NewStock("LTWR",1800,12.95)

6. 将这三个实例添加到 stockValues 中。

VB

stockValues.Add(s1)

stockValues.Add(s2)

stockValues.Add(s3)

7.将更新的stockValuesArrayList添加到会话中。

VB

Session("stockValues")=stockValues

8. 在Else块中,编写一行代码,将会话中保存的当前值赋给 stockValuesArrayList。

VB

stockValues=Ctype(Session("stockValues"),ArrayList)

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

它应该是在 ConfigureCrystalReports() 方法中执行的第一行代码。

VB

PopulateStockValuesArrayList()

动态填充对象集合

在上一节中,您以编程方式填充了对象集合。

在本节中,您将学习如何将信息从网站动态添加到数据源中。

在报表中此信息将能够自动更新。

向Web窗体添加控件

1. 在设计视图中打开Default.aspx文件。

注意

要在设计视图中打开ASPX页,请先打开文件,然后单击窗体底部的“设计”按钮。

2.单击 CrystalReportViewer 控件,将其选中。

3.按键盘上的左箭头键,直到出现闪烁的光标为止,然后按几次Enter键。

4.从“工具箱”中,将“TextBox”控件拖动到Web窗体上。

5.从“属性”菜单中,将ID设置为“symbol”。

6.将第二个“TextBox”控件拖动到Web窗体上。

将第二个“TextBox”放在第一个“TextBox”的下面。

7.从“属性”菜单中,将ID设置为“price”。

8.将第三个“TextBox”控件拖动到Web窗体上。

将第三个“TextBox”放在第二个“TextBox”的下面。

9. 从“属性”菜单中,将ID设置为“volume”。

注意

此时,可能会发现在每个“TextBox”控件旁边添加文本是很有用的,这有助于确定哪个控件对应于哪个参数。

10.接下来,从“工具箱”中,将“Button”控件拖动到Web窗体上。

将 Button 放在三个TextBox控件的下面。

11. 从“属性”菜单中:

a.将“Button”的ID设置为“addStockInformation”。

b.将“Button”的“Text”设置为“添加股票信息”。

12. 最后,单击两次“添加股票信息”按钮。

双击“Button”控件时,将打开代码隐藏类,并且自动生成 addStockInformation_Click() 事件处理程序。

将信息添加到集合中

在本节中,将为 addStockInformation_Click() 事件处理程序编写代码,以将在Web窗体中输入的信息添加到 stockValues 集合中。

1. 在 addStockInformation_Click() 事件处理程序中,创建并实例化一个新的Stock对象。

VB

DimtempAsStock=NewStock()

2. 在 addStockInformation_Click() 方法中,创建一个try/catch块。

在Web窗体中输入的信息为字符串类型。

由于Stock类中的两个字段是数字类型的,因此需要编写代码将Web窗体中的字符串值转换为数值。

try/catch语句有助于防止Web应用程序在转换过程中由于类型不匹配错误而崩溃。

VB

Try

CatchexAsException

EndTry

3.在Try块中,将Web窗体上的symbol字段的值赋给Stock对象的Symbol属性。

VB

temp.Symbol=symbol.Text

4.在下一行中,将Web窗体上的price字段的值赋给Stock对象的Price属性。

在赋值之前,将Web窗体中的值转换为双精度值。

VB

temp.Price=CType(price.Text,Double)

5.接下来,将Web窗体上的volume字段的值赋给Stock对象的Volume属性。

在赋值之前,将Web窗体中的值转换为整数。

VB

temp.Volume=CType(volume.Text,Integer)

6. 在try/catch块外面,将Stock对象添加到 stockValuesArrayList 中。

VB

stockValues.Add(temp)

7. 更新在会话中当前保存的 stockValues 值。

VB

Session("stockValues")=stockValues

8. 最后,调用 ConfigureCrystalReports() 方法。

这会将报表重新绑定到更新的 stockValues 对象集合。

VB

ConfigureCrystalReports()

9. 从“生成”菜单中,单击“生成解决方案”。

10. 从“调试”菜单中,单击“开始调试”。

如果没有出现生成错误,则会使用三个默认值将Default.aspx页面加载到浏览器中。

要添加其它的值,请相应地填充TextBox控件,然后单击“添加股票信息”按钮。

将动态地更新该报表。

当运行网站时,将使用三个默认值将该报表加载到浏览器窗口中,这些值是在 “以编程方式填充对象集合”中以编程方式添加的。

报表上面有三个TextBox控件和一个Button控件。

通过使用这些控件,您可以动态地更新对象集合,并查看在报表中反映的此更新的结果。

附录:

增强报表

对象集合是Crystal报表的通用数据源。

通过使用对象集合,您可以编写自定义类,以编程方式或动态方式将数据填充到对象。

由于对象集合允许编写自己的数据访问对象,因此可以使用对象集合来扩充随CrystalReportsforVisualStudio默认安装提供的数据源。

现在,您已经创建了一个功能完整的网站,它显示基于对象集合的Crystal报表。

该网站显示以编程方式输入对象集合中的信息,以及在运行时动态添加的信息。

在本节中,将添加两个图表、一个计算字段以及汇总信息。

将一个简单图表添加到报表中

1.从解决方案资源管理器中,打开StockObjects.rpt。

2.从“CrystalReports”菜单选择“插入”,并单击“图表”。

3.在“图表专家”对话框中,选择“饼图”。

4.从“报表字段”中选择“数据”选项卡。

5.选择“Stock.Symbol”并单击最上面的右箭头将“Stock.Symbol”字段移到“更改为”字段。

6.选择“Stock.Volume”并单击最下面的右箭头,将“Stock.Volume”字段移到“显示值”字段。

7. 单击“确定”。

将创建一个新的“报表头”节,并在此节中添加一个图表对象。

8.从“调试”菜单中,单击“开始调试”。

如果没有生成错误,Default.aspx页面被加载到浏览器中。

添加基于公式字段的图表

在本节中,将创建一个图表,它使用集合信息来制作报表。

首先创建一个公式来计算持有的特定股票的价值,然后创建一个饼图以显示持有的所有股票所占的价值比例。

1.从“CrystalReports”菜单中,选择“报表”,然后单击“公式工作室”。

2.在“公式工作室”对话框中,选择“公式字段”。

3.单击“新建”按钮以创建新的公式。

4.在“自定义函数名称”对话框中,输入“worth”。

5.单击“使用编辑器”。

6.添加代码,用“volume”字段的值乘以“price”字段的值。

7.

8.{Stock.Volume}*{Stock.Price}

9.

10.单击“保存并关闭”。

11.从“CrystalReports”菜单选择“插入”,并单击“图表”。

12.在“图表专家”对话框中,选择“饼图”。

13.单击“数据”选项卡。

14.选择“Stock.Symbol”并单击最上面的右箭头将“Stock.Symbol”字段移到“更改为”字段。

15.选择“Worth”并单击最下面的右箭头,将“Worth”公式移到“显示值”字段。

16.单击“文本”选项卡。

17.在“标题”旁边,清除“自动添加文字”复选框。

18.在“标题”字段中,输入“Worth/Symbol”。

19.单击“确定”。

20. 将创建一个新的“报表头”节,并在此节中添加一个图表对象。

注意

要在Crystal报表中重新放置对象,请使用鼠标拖动它们并放在所需的位置。

可以使用窗体底部的“主报表预览”按钮来显示报表预览。

将公式和汇总字段添加到报表中

在本节中,将在报表中添加公式字段和汇总字段,用于计算各种股票的总价值。

1.展开“字段资源管理器”的“公式字段”节点。

2. 将“worth”公式拖动到报表中。

将此字段放在报表的“详细资料”节中。

注意

显示“字段资源管理器”的另一种方法是转到“CrystalReports”菜单,然后单击“字段资源管理器”。

3.该字段将显示每行的价值。

可以使用汇总字段来显示各种股票的总价值。

4.从“CrystalReports”菜单中,选择“插入”,然后单击“汇总”。

5. 在“插入汇总”对话框中:

a.从“选择要汇总的字段”字段中,选择“Worth”公式。

b.从“计算此汇总”字段中,选择“求和”。

c.从“汇总位置”字段中,选择“总计”。

6. 单击“确定”。

将在报表中添加一个汇总字段。

7.从“调试”菜单中,单击“开始调试”。

如果没有生成错误,Default.aspx页面被加载到浏览器中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1