水晶报表技术(6)——如何在.Net Web应用中使用水晶报表1

简介:
   这篇文章教你如何在 .Net Web 应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的 Asp.Net 访问数据库的知识以及使用 VS.Net 的开发经验。  
简介   
    水晶报表可以由很多的方法得到,其中一个就是使用 VS.Net 来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用 VS.Net 开发 .Net 程序,那么你就不需要再安装其它软件了,因为他已经内嵌在 VS.Net 中了。  
优点
VS.Net
水晶报表有下面一些主要的优点:  
 
快速的报表开发  
 
能够导出成为复杂的交互性图表  
 
可以与其它控件一起在 WebForm 中使用  
 
能够动态地将报表导出成为 .pdf,.doc,xls,html,rtf 等多种格式    
结构:  
 
一些组件组成了水晶报表的二层结构,需要的 Web 应用有:  
 
客户端  : 
    
客户端仅需要一个可以访问嵌入 aspx 页面报表的游览器就可以了  
 
服务器  : 
      - 
水晶报表引擎 (Crystal Report Engine (CREngine.dll)) 
    
通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将 Asp.Net 中的水晶报表转换成为普通 HTML 格式  
    - 
水晶报表设计器 (Crystal Report Designer (CRDesigner.dll)) 
    
水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。  
     -  .rpt
报表文件  
    
执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的 .rpt 例子。  
     -  Data Source 
     .rpt
文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装 DataSet, 然后再将其传送到报表文件。  
    - 
水晶报表查看控件 (Crystal Report Viewer web form Control (CRWebFormViewer.dll)) 
    
水晶报表查看控件是一个 WebForm 控件,可以将它看成是一个在 .aspx 页面中存放报表的容器。   注意:在一些复杂的操作中,报表服务器与 Web 服务器可能不在同一物理主机上, Web 服务器将 HTTP 请求传送到报表服务器上去。水晶报表也可以当做 WebService 来执行。  
 
执行模式  
水晶报表取数据可以使用下面的方法实现:  
- Pull 
模式
 
被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。  
- Push 
模式  : 
此时开发表不得不自己编写代码连接数据并组装 DataSet ,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。  
报表类型:  
水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。  
- Strongly-typed 
报表  : 
当你将报表文件加入到项目中去时,它就变成了一个了 “ strongly-typed“ 报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。  
 - Un-Typed 
报表  : 
这里的报表并不直接包含在项目中,因此称为 'un-typed’  报表。在这种情况下,你不得不使用水晶报表的 ”ReportDocuemt“ 对象建立一个实例,并且 手动 地凋用报表。  
  
其它注意事项  
-        
尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。  
-         VS.Net
中的水晶报表如果没有注册,那么它只能使用 30 次, 30 次后, 保存 功能就不能再使用了。为了避免这个,你不是不在  http://www.crystaldecisions.com/ 这里注册此产品。  ( 好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持
-         
默认安装的水晶报表只能支持 5 个用户,为了支持更多的用户,你不得不在  http://www.crystaldecisions.com/ 中购买许可证。  
    
让我们感受一下----在 Asp.net 中使用一个现成的水晶报表文件
1)  WebForm 工具栏中拖动水晶报表查看器控件 (Crystal Report Viewer) .aspx 页面中。          
2) 
调出水晶报表查看器控件的属性窗口      
3) 
点击[ ... ]按钮查看 "Data Binding" 属性,并弹出了 DataBinding 窗口。
4)  
从左边的 "Bindable 属性 区中选择 “Report Source”
5) 
选中 " 自定义绑定表达式 " 单选按钮,在右边的底部的窗口中指定 .rpt 文件的文件名和路径,例如: "C:\\Program Files\\Microsoft Visual Studio.NET\\Crystal Reports\\Samples\\Reports\\General Business\\World Sales Report.rpt" ,然后 确定
    
注意:文件 ”World Sales Report.rpt“ 文件是在 VS.Net 安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。  
上面的步骤中实际上是插入了下面这些代码至 Asp.Net 文件中:
  
以及:
        
                  id="CrystalReportViewer1"
                  runat="server" Width="350px" Height="50px" 
                  ReportSource=''>
        
注意:在飞刀我的 VS.Net 正式版中自动生成的代码中 ReportSource 产生的样式不是这样子的,它是:
  ReportSource="" 
这样是错误的,会出现错误信息,有两处错误:  
必须按照使用本文介绍的格式来手动修改,这也算是 VS.Net 的一个 Bug 吧。  
6) 
Page_Load 方法中调用 DataBind 方法。 ( 代码为 VB.Net) 
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    DataBind() 
End Sub 
7)
保存并编译你的页面。   现在,你就有一个内嵌水晶报表的 WebForm 页面了。  
注意:实际开发中,一开始会出现无法访问 inetsrv 目录的错误,解决的办法是改变其目录的安全属性,使 User 用户有可写的权限。飞刀我发现 .Net 系统自已给出的解决方法是没有用的,也可能是我使用的是 Windows.Net 操作系统的原因。




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203446,如需转载请自行联系原作者

目录
相关文章
|
11天前
|
设计模式 安全 网络安全
安全风险在WEB应用中的排名变化
【7月更文挑战第16天】本文介绍OWASP的安全风险评估,一个国际非营利组织,专注于提升Web应用安全。其Top 10项目列出最严重的安全风险,如Broken Access Control(现最严重风险),加密故障,注射漏洞,不安全设计,配置错误等。2021版新增了不安全设计、软件完整性故障和服务器端请求伪造等类别。安全问题排名考虑了发生率,以反映攻击者只需一个实例即可造成损害的风险。**
35 2
安全风险在WEB应用中的排名变化
|
3天前
|
SQL API 网络架构
Pythoner必看!RESTful API设计秘籍,让你的Web应用瞬间高大上!
【7月更文挑战第24天】在 Python Web 开发中, RESTful API 设计至关重要, 它不仅展现技术实力, 更提升应用的可维护性与用户体验。
19 5
|
4天前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
12天前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
【7月更文挑战第15天】Python的协程与异步函数优化Web性能,通过非阻塞I/O提升并发处理能力。使用aiohttp库构建异步服务器,示例代码展示如何处理GET请求。异步处理减少资源消耗,提高响应速度和吞吐量,适用于高并发场景。掌握这项技术对提升Web应用性能至关重要。
37 10
|
10天前
|
JavaScript 前端开发 网络协议
从理论到实践:全面剖析Python Web应用中的WebSocket实时通信机制
【7月更文挑战第17天】WebSocket在实时Web应用中扮演重要角色,提供全双工通信,减少延迟。本文详述了Python中使用`websockets`库创建服务器的步骤,展示了一个简单的echo服务器示例,监听8765端口,接收并回显客户端消息。客户端通过JavaScript与服务器交互,实现双向通信。了解WebSocket的握手、传输和关闭阶段,有助于开发者有效利用WebSocket提升应用性能。随着实时需求增长,掌握WebSocket技术至关重要。
37 6
|
8天前
|
存储 数据库 开发者
Flask中的蓝图与插件应用:构建模块化Web应用的利器
【7月更文挑战第19天】Flask蓝图和插件是构建模块化、可扩展和可维护Web应用的强大工具。蓝图允许你将应用分割成多个独立的部分,提高了代码的组织性和可重用性;而插件则为Flask应用提供了丰富的功能和社区支持,简化了开发过程。通过合理地使用蓝图和插件,你可以更加高效地开发出高质量的Web应用。
|
8天前
|
前端开发 数据库 开发者
构建可维护的Web应用:Python模板引擎与ORM的协同工作
【7月更文挑战第19天】在Web开发中,可维护性至关重要。Python搭配Flask或Django框架,利用模板引擎(如Jinja2)和ORM(如SQLAlchemy或Django ORM)增强开发效率和代码质量。模板引擎桥接前后端,ORM简化数据库操作,两者协同提升可读性和可测试性。例如,Flask用Jinja2渲染动态HTML,Django通过ORM处理数据库模型。这种分离关注点的方法降低了耦合,增强了应用的可维护性。
16 1
|
11天前
|
前端开发 JavaScript UED
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
【7月更文挑战第16天】在前后端分离的Web开发中,WebSocket解决了实时数据交换的问题。使用Python的Flask和Flask-SocketIO库,后端创建WebSocket服务,监听并广播消息。前端HTML通过JavaScript连接到服务器,发送并显示接收到的消息。WebSocket适用于实时通知、在线游戏等场景,提升应用的实时性和用户体验。通过实战案例,展示了如何实现这一功能。
|
11天前
|
JavaScript 前端开发 UED
WebSocket在Python Web开发中的革新应用:解锁实时通信的新可能
【7月更文挑战第16天】WebSocket是实现Web实时通信的协议,与HTTP不同,它提供持久双向连接,允许服务器主动推送数据。Python有多种库如websockets和Flask-SocketIO支持WebSocket开发。使用Flask-SocketIO的简单示例包括定义路由、监听消息事件,并在HTML中用JavaScript建立连接。WebSocket提高了实时性、减少了服务器压力,广泛应用于聊天、游戏等场景。
19 1
|
14天前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
36 3