自定义水晶报表查看器的外观

来源:互联网 发布:红色警戒2mac版下载 编辑:程序博客网 时间:2024/04/30 15:04
 自定义水晶报表查看器的外观

目录

1、隐藏/显示查看器的各组成部分,如:树视图、工具栏。
2、隐藏/显示工具栏按钮。
3、控制查看器在 Web 页面里的布局。
4、去除水晶报表的公司LOGO。
5、替换工具栏按钮的图片。


1、隐藏/显示查看器的各组成部分,如:树视图、工具栏。
设置 Crystal Report Viewer 的属性:
BestFitPage 布尔值。获取或设置页面视图是大小合适还是用滚动条进行裁剪。配合设置 Width、Height 来实现无空白和无滚动条的显示!
DisplayGroupTree 布尔值。获取或设置树视图是可见还是隐藏。
DisplayPage 布尔值。获取或设置工具栏是可见还是隐藏。
DisplayToolbar 布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。
PageZoomFactor Int32。获取或设置报表的缩放因数。
SeparatePages 布尔值。获取或设置报表页是分开还是连接。
PageToTreeRatio Float64。设置组树与报表视图之间的大小比例。

2、隐藏/显示工具栏按钮。
设置 Crystal Report Viewer 的属性:
HasGotoPageButton 布尔值。获取或设置转到页按钮的可见性。
HasLevelUpButton 布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。
HasPageNavigationButtons 布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。
HasRefreshButton 布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。
HasSearchButton 布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。
HasZoomFactorList 布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。

3、控制查看器在 Web 页面里的布局。
在“设计视图”,修改 CrystalReportViewer 的 Width、Height 属性。
切换到窗体的“HTML 视图”,修改 style 属性。


4、去除水晶报表的公司LOGO。
将 Crystal 公司的Logo 文件替换或删除。
(1)如果是用 VS.NET 里自带的水晶报表
C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers/images/ToolBar/logo.gif
(2)如果是用水晶报表 9.2
C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers/images/toolbar/crlogo.gif

5、替换工具栏按钮的图片。
(1)如果是用 VS.NET 里自带的水晶报表
C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers/images
(2)如果是用水晶报表 9.2
C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers/images






登录失败

目录

1、文件夹 NTFS 权限的问题
2、PULL 模式下,数据库登录问题 (Windows 集成身份验证)
3、PULL 模式下,数据库登录问题 (非 Windows 集成身份验证)
4、PUSH 模式下,画蛇添足登录数据库。
5、部署时出错:连接失败。错误的登录参数。


概述

登录失败是水晶报表 Web 应用的一个常见问题,涉及账号模拟、身份验证方式、数据库安全、NTFS 权限这些方方面面的安全问题。
1. 模拟
用户访问 ASP.NET 程序时,通常模拟的是 ASPNET 账号。也可能是当前用户、SYSTEM 账号等。
2. 验证
(1) 登录数据库需要验证用户的身份。
如果采用非 Windows 集成身份验证,则需要提供正确的登录用户名和密码。如果用户名或密码错误,则登录失败。
而采用 Windows 集成身份验证,会自动用用户模拟的账号登录。
(2) 访问 NTFS 文件夹时也需要验证用户的身份。验证的是用户模拟的账号。
3. 授权
(1) 数据库安全采用 Windows 集成身份验证时,如果用户模拟的账号没有登录权限,则出现登录失败。
(2) 访问 NTFS 文件夹时,如果用户模拟的账号没有相应的 NTFS 权限,也会出现登录失败。


1、文件夹 NTFS 权限的问题
(1) 水晶报表 Web 查看器文件夹
VS.NET 内置的水晶报表:C:/Program Files/Microsoft Visual Studio .NET/Crystal Reports/Viewers
水晶报表 9.x:C:/Program Files/Common Files/Crystal Decisions/2.0/crystalreportviewers
错误提示:“/WebApplication1”应用程序中的服务器错误。登录失败。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
(2) 报表文件所在的文件夹,或者导出时的目标文件夹。
错误提示:s登录失败。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
(3) 解决方案
在资源管理器里设置上述文件夹的“安全”,即 NTFS 权限。
为用户 ASPNET 添加“写入”权限。
如果问题仍然存在,为用户 Everyone 添加“完全控制”权限。

2、PULL 模式下,数据库登录问题 (Windows 集成身份验证)
(1) 错误提示
“/MyWebApp”应用程序中的服务器错误。
用户 'PYPC101/ASPNET' 登录失败。
(2) 问题分析
设计水晶报表时,在“数据库专家”的“连接信息”里使用了“集成安全”,即采用了 Windows 集成身份验证。
(3) 解决方案
要为 ASPNET 账号增加数据库登录和访问权限……
但这种安全措施不太适用,设计时最好使用非 Windows 集成身份验证,用服务器的账号登录,比如:sa。

3、PULL 模式下,数据库登录问题 (非 Windows 集成身份验证)
运行时读取 web.config 中服务器及账号信息,并登录数据库服务器。

using CrystalDecisions.Shared ; //负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports.Engine ; //负责解释ReportDocument类

private void Page_Load(object sender, System.EventArgs e)
{
string rptPath;
rptPath=Server.MapPath ("analysis.rpt");
oRpt.Load (rptPath;);

//从web.config中获取服务器及账号信息
string serverName, dbName, userName, password;

serverName = System.Configuration.ConfigurationSettings.AppSettings ["serverName"];
dbName = System.Configuration.ConfigurationSettings.AppSettings ["dbName"];
userName = System.Configuration.ConfigurationSettings.AppSettings ["userName"];
password =System.Configuration.ConfigurationSettings.AppSettings ["password"];

//登录数据库
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;

// 对报表中的每个表依次循环。
for (i=0;i == Report.Database.Tables.Count - 1;i++)
{
// 设置当前表的连接信息。
logOnInfo.ConnectionInfo.ServerName = serverName;
logOnInfo.ConnectionInfo.DatabaseName = dbName;
logOnInfo.ConnectionInfo.UserID = userName;
logOnInfo.ConnectionInfo.Password = password;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}

//建立.rpt文件与CryStalReportviewer文件之间的连接
CrystalReportViewer1.ReportSource = oRpt;

CrystalReportViewer1.DataBind();
}

4、PUSH 模式下,画蛇添足登录数据库。
PUSH 模式使用程序里的数据集作为数据源,不需要登录数据库。

5、部署时出错:连接失败。错误的登录参数。
部署包缺少了负责数据源读写的管理模块:Crystal_Database_Access2003.msm、Crystal_Database_Access2003_chs.msm。
0 0