应该对 Crystal Reports 使用哪种持久性方法?
当规划用 Crystal Reports SDK 生成 Web 应用程序时,其中最重要的一项考虑就是使用哪种持久性方法。通过学习有关持久性的 SDK 基础知识,将有助于选择最佳的 Crystal Reports for Visual Studio 项目结构。
什么是持久性?
Web 页不能保持状态(连接到网站的用户的状态和信息)。从服务器请求每个 Web 页,将其发送到用户,随后该进程终止。对于阅读文本信息,这没有问题;但对于设计需要在页重新加载和重新定向过程中保持信息的 Web 应用程序来说,这便是一个问题。
持久性是指使用某种机制保持每个用户的状态(例如每个用户正在查看的当前报表页)不受页重新加载和重新定向的影响。
持久性最佳做法
在本节中,将介绍在 Web 页重新加载期间刷新 Crystal 报表时保持对 Web 页上该 Crystal 报表所做更改的最佳做法。需要保持的更改可能如同单击了报表查看器的“下一页”按钮后进入第二页那样简单,也可能如同更改了报表的参数后显示完全不同的数据那样复杂。
在 Crystal Reports for Visual Studio 中,持久性必须应用于以下内容:
- CrystalReportViewer 控件。
- 绑定到 CrystalReportViewer 控件的报表。
在 ASP 和 ASP.NET 中保持状态的方法
在传统 ASP 和 ASP.NET 中,状态是通过 Web 浏览器或 Web 服务器维持的,方式如下。
环境
|
客户端还是服务器?
|
名称
|
方法
|
---|---|---|---|
ASP*
|
客户端浏览器
|
窗体字段
|
通过窗体提交字段在 Web 页间传递名称/值对。
|
ASP*
|
客户端浏览器
|
URL 参数
|
使用 URL 参数在 Web 页间传递名称/值对。
|
ASP*
|
客户端浏览器
|
Cookie
|
将名称/值对赋给客户端浏览器上的 Cookie,然后在新页中获取该 Cookie。
|
ASP*
|
Web 服务器
|
Session 对象
|
将实例化的对象赋给服务器上的 Session 对象,然后从新页中的 Session 检索。
|
ASP*
|
Web 服务器
|
Application 对象
|
将实例化的对象赋给服务器上的 Application 对象,然后从新页中的 Application 检索。
|
ASP.NET
|
客户端浏览器
|
ViewState 对象
|
将字符串值赋给 ASP.NET Web 窗体的 ViewState 对象。
|
ASP.NET
|
Web 服务器
|
Cache 对象
|
与 Application 对象相同,但具有增强的功能。
|
* 所有 ASP 持久性方法都可以在 ASP.NET 中使用。
哪种持久性方法最适合用于 Crystal Reports?
最适合用于 Crystal Reports 的持久性方法是 ViewState、Session 或 Cache。