现在的位置: 首页 > 综合 > 正文

vs2005 水晶报表横向打印Bug

2013年02月23日 ⁄ 综合 ⁄ 共 1264字 ⁄ 字号 评论关闭

前几日发现水晶报表设计器中设置为横向打印的时候,出来的打印出口中默认选项仍未纵向,遍寻网络无果,只有人说是水晶报表的Bug,只好自己想办法。使用Reflector反编译crystal report后,在CrystalDecisions.Web.ViewerToolbar中发现了如下代码:

    if (info1 != null)
                {
                    builder1.Append("prm.paperorientation = \"");
                    builder1.Append((int) info1.Orientation);
                    builder1.Append("\";\r\nprm.papersize = \"");
                    builder1.Append((int) info1.PaperSize);
                    builder1.Append("\";\r\nprm.drivername = \"");
                    builder1.Append(info1.DriverName);
                    builder1.Append("\";\r\nprm.usedefprinter = \"");
                    builder1.Append(info1.UseDefaultPrinter ? "1" : "0");
                    builder1.Append("\";\r\nprm.usedefprintersettings = \"");
                    builder1.Append(info1.UseDefaultPrinterSettings ? "1" : "0");
                    builder1.Append("\";\r\n");
                } 

而在aspnet_client\system_web\2_0_50727\CrystalReportWebFormViewer3\html\crystalprinthost.html中有以下代码

if (window.dialogArguments.pageorientation) {
    objectTag +="<PARAM NAME=\"PageOrientation\" VALUE=\"";
    objectTag += window.dialogArguments.pageorientation;
    objectTag += "\">";
}

显然会发现标红粗体部分上下不一致,所以导致即便在页面设置了为横向打印,出来依然是默认选项,将html中的pageorientation修改为paperorientation就OK了。注意上边html代码中的第二行正确,不需要修改。

抱歉!评论已关闭.