教程:使用 Session 保持 ReportDocument 对象模型
在本教程中,您需要使用 ReportDocument 对象模型,在运行时以编程方式更改报表。您还要学习如何使用 Session 使得在重新加载 Web 页期间能保持这些更改。
因为只有 Web 应用程序需要 Session 持久性,所以本教程不适用于 Windows 项目。
注意 |
---|
有关持久性的概述,请参见 SDK 基础知识下面的“应该对 Crystal Reports 使用哪种持久性方法?”。 |
简介
您在本教程中创建的项目将使用一个 Web 窗体,其中包含一个 CrystalReportViewer 控件和两个按钮,这两个按钮可以更改 ReportDocument 对象模型中的报表的排序顺序。
首先,需要构建尚不具备 Session 持久性的项目。在不具备持久性的情况下,您会看到排序顺序的更改只能维持一个按钮单击事件的时效。
然后,向该项目添加 Session 持久性。在创建 ReportDocument 实例时以及 ReportDocument 实例状态发生任何改变时,该实例都会被放入 Session。
每当需要重新显示报表时,都会从 Session 中调出 ReportDocument 实例,并绑定到 CrystalReportViewer 控件。这样即可保证每次显示报表时,用户查看的都是最新的 ReportDocument 实例版本。
注意 |
---|
在本教程中所使用的是 Session,因为需要保持针对 ReportDocument 对象模型所做的修改。如果只打算使用 CrystalReportViewer 控件中包含的受限对象模型,则只应使用 ViewState。 |
使用 Session 保持 ReportDocument 对象时,是否还涉及其他任何持久性模型?
使用 Session 保持 ReportDocument 对象时,是否还涉及其他任何持久性模型?
是。在 ASP.NET Web 应用程序中,对象通常使用 Session 实现持久性,而 Web 服务器控件却使用 ViewState 实现持久性。由于 Crystal Reports for Visual Studio Web 应用程序使用对象和 Web 服务器控件与报表交互,因此持久性是通过 Session 和 ViewState 共同实现的:
- Session 可以保持 ReportDocument 对象模型,该模型在运行时以编程方式与报表交互。
- ViewState 可以保持用于显示报表的 CrystalReportViewer 控件。特别是,ViewState 能够保持在 CrystalReportViewer 的工具栏中设置的显示属性。ViewState 还可以保持通过工具栏按钮触发的任意事件(如“Zoom”、“NextPage”)。
ViewState 持久性是自动管理的。因此,在本教程中,您只需对 Session 持久性编码。
示例代码
此教程附带 Visual Basic 和 C# 示例代码,这些代码显示了项目完成后的版本。请按照本教程中的说明创建新项目或打开示例代码项目,以利用完成后的版本进行工作。
示例代码保存在按语言和项目类型分类的文件夹中。各示例代码版本的文件夹名称如下:
- C# 网站:CS_Web_RDObjMod_Session
- Visual Basic 网站:VB_Web_RDObjMod_Session
欲知包含这些示例的文件夹的位置,请参见“教程的示例代码目录”。