绑定到缓存的嵌入式报表类
对象模型
此报表绑定方案使用 ReportDocument(请参见“通过 ReportDocument 对象模型进行报表绑定”)。
报表的位置
报表嵌入在项目中。
说明
当报表嵌入 Visual Studio 项目后,项目中将自动生成表示该报表文件的报表包装类。同时还将自动生成该报表的缓存管理实用程序类。
包装类的使用在“绑定到嵌入式报表类”中进行了介绍。
在此方案中,将把 CrystalReportViewer 控件绑定到缓存管理实用程序类,以便自动处理缓存到 ASP.NET Cache 对象中的报表。
注意 |
---|
有关缓存报表和缓存管理实用程序类的详细信息,请参见“应该使用常规报表还是缓存报表?”。 |
缓存的使用
缓存具有有限、特定的用法,如果不小心管理,可能会过度使用系统资源。若要了解何时使用缓存,请参见“缓存具有“高可共享性”的报表”。
缓存非嵌入式报表
如果要管理非嵌入式报表的缓存,则必须创建自己的缓存管理实用程序类。有关更多信息,请参见“绑定到已加载到缓存管理实用程序类的非嵌入式报表”。
优点
- 为可共享性设计:非常适合存储具有高可共享性且参数或登录信息中很少发生改变的报表。
- 优化数据访问:如果具有高可共享性的报表非常大,或具有非常复杂以致于需要几分钟来进行检索的查询,则使用缓存管理实用程序类可以更快地访问数据。
缺点
- 服务器负担加重:保留在 ASP.NET Cache 对象中的报表将加重服务器上的内存资源负担。
- 持久性问题:缓存具有一些依赖项,这些依赖项允许它检查报表实例中的更改并重新缓存报表实例。但是,如果数据库发生更改,则 Cache 中的报表实例将不能刷新以显示该更改。
- 消耗资源:如果报表带有用不同的参数字符串频繁调用的参数(特别是如果这些参数中有一个是用户 ID),则每次都会产生一个新的缓存报表。这将消耗大量系统资源。如果报表的共享程度不是很高,则应该将该报表实例赋给 Session 对象。请参见 “Session 和 ReportDocument 对象模型的持久性”。
绑定到缓存管理实用程序类
注意 |
---|
此过程仅适用于已通过“项目设置”创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置。如果没有该配置,将无法完成此过程。因此,在开始此过程之前,必须首先执行“项目设置”中的步骤。 |
在 ConfigureCrystalReports() 方法(在“项目设置”中创建)中,删除现有的几行代码,将报表包装类替换为缓存管理实用程序类。
实例化与 Hierarchical Grouping.rpt 关联的缓存管理实用程序类。
``` vb
Dim cachedHierarchicalGroupingReport As CachedHierarchical_Grouping
= New CachedHierarchical_Grouping()
```
``` csharp
CachedHierarchical_Grouping cachedHierarchicalGroupingReport = new
CachedHierarchical_Grouping();
```
- 将缓存管理实用程序实例传递到 CrystalReportViewer 控件。
``` vb
myCrystalReportViewer.ReportSource = cachedHierarchicalGroupingReport
```
``` csharp
crystalReportViewer.ReportSource = cachedHierarchicalGroupingReport;
```
- 若要查看该报表,请生成并运行您的项目。