VS2005+Crystal Report开发Web应用

2016-02-19 15:21 1 1 收藏

下面是个超简单的VS2005+Crystal Report开发Web应用教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  提要 本文试验将帮助你创建一个使用Crystal Report的Web应用程序报告中的数据

  详细步骤

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

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

   在Visual StudioInstalled 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;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

   这个参考使你能够存取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()方法中被执行代码的第一行。

  

PopulateStockValuesArrayList();

   从Build菜单下,点击Build Solution。

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

   从Debug菜单下,点击Start Debugging。

   如果这是你启动调试器的第一次,那么将出现一个对话框告诉你必须修改Web.config文件。点击OK按钮以启动调试功能。

   Default.aspx页面连同三个缺省值加载到你的浏览器中。

   关闭Internet Explorer窗口。

  七、 练习5:把数据动态地添加到股票报告上

  说明 在上一个练习中,你用编程方式填充对象集合。在本练习中,你将学习如何动态地从你的网站把信息添加到你的数据源。该信息能够在你的报表中得到自动更新。

  详细步骤

  1. 添加控件到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对象。

  

Stock temp = new Stock();

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

  

try{}catch{}

   输入到一个Web表单中的信息属于String类型。因为Stock类中的两个字段都是numerical型,所以你需要编写代码来把Web表单中的String值转换为numerical值。try/catch语句有助于保护你的web应用程序免于崩溃在类型转换出现错误匹配期间。

   在Try块中,把在Web表单中的symbol字段的值赋值到Stock对象的Symbol属性。

  temp.Symbol = symbol.Text;

   在下一行中,把在Web表单中的price字段的值赋值到Stock对象的Price属性。注意,在赋值之前,要把Web表单中的这个值转化为一个Double。

  

temp.Price = Convert.ToDouble(price.Text);

   然后,把在Web表单中的volume字段的值赋值到Stock对象的Volume属性。注意,在赋值之前,要把Web表单中的这个值转化为一个整数。

  

temp.Volume = Convert.ToInt32(volume.Text);

   在try/catch块的外面,把Stock Object添加到stockValues ArrayList。

  

stockValues.Add(temp);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

   更新当前存在于Session中的stockValues的值。

  

Session["stockValues"] = stockValues; 

   最后,调用ConfigureCrystalReports()方法。这将把报告重新绑定到这个更新过的stockValues一个对象集合。

  

ConfigureCrystalReports();

   从Build菜单下,点击Build Solution。

   如果你遇到任何构建错误,则现在就修改。

   从Debug菜单下,点击Start Debugging。

   如果没有出现构建错误,Default.aspx页面将使用三个缺省值加载到你的浏览器。为了添加其它值,适当地填充文本框并且点击Add Stock Information按钮。报告将会被动态地更新。

   当你运行你的网站时,报告将装载到你的浏览器窗口中使用三个缺省值(你是在练习4中以编程方式添加的)。在报告上面共有三个TextBox控件和一个按钮控件。使用这些控件,你可以动态地更新你的一个对象集合,并且看到这一更新的结果会反映到你的报告中。

   关闭Internet Explorer窗口。

  八、 练习6:在报告中添加图表和摘要信息

  说明 至此,你已经拥有一个全功能的网站,它将显示一个基于一个对象集合的水晶报表。该站点将显示以编程方式输入到一个对象集合中的信息,以及在运行时刻被动态地添加的信息。

  在这个练习中,你将添加两个图表,一个calculated字段和摘要信息。

来源:https://www.tulaoshi.com/n/20160219/1609476.html

延伸阅读
  一、 引言 在XMLHttpRequest对象和AJAX给用户和开发者带给巨大好处的同时,也许还有一些问题你没有考虑到-但是的确到了值得引起每个人注意的时候了。 甚至非常讨厌的人也都喜欢XMLHttpRequest,因为它提供给程序员真正梦想的功能。也正是因为有了这样的新技术,Web应用软件开始变得具有象桌面应用软件相似的行为。如...
标签: Web开发
在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制。虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向。在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发...
MVC介绍 MVC模式是一种非常理想化的设计模式,应用MVC模式完成两个以上项目的人都有同样的体会,他们已经对以前的工作方法进行了彻底的改造。工作模式的改变要付出痛苦的代价,但现在你有现成的技术架构可以采用,避免在项目中自己开发、摸索。它就是开源Apache Struts framework,它提供了实现MVC设计模式最好的实现工具。 ...
标签: ASP
  (转载计算机世界) 夏长虹 童亮 陈文博 一. 应用实例的分析与开发 ---- 我们以学籍管理系统为背景,基于Windows DNA的思想,开发了一套应用系统。在该系统中,有关教务学籍的事务逻辑都是由定制COM组件来处理的,动态Web页面通过ASP脚本调用这些组件。系统在开发速度和软件质量等方面都优于不用COM组件而仅用ASP脚...
标签: Java JAVA基础
  JSP(JavaServer Pages)技术是对Servlet的进一步抽象,它由JCP(Java Community Process)开发,是用于生成动态内容的开放式的、可免费获取的规范,也是J2EE(Java 2 Enterprise Edition)规范的重要组成部分。许多商业应用服务器如BEA WebLogic、IBM WebSphere、Live Jrun和Orion都支持JSP技术。 从机票预订系统、银行系统到购物系...

经验教程

550

收藏

59
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部