我正在使用 Crystal Reports 2008 在 c# .Net 中在运行时修改报表。
我在修改日期字段格式时遇到问题。我已经访问了 DateFieldFormat 对象,并修改了属性,但似乎只有 SystemDefaultType 属性有任何影响。
如果在可视报表设计器中设置了日期格式,我可以在 DateFieldObject 中看到格式的详细信息,但编辑这些值不会对显示的报表产生任何影响。
这是我正在使用的代码示例:
使用语句:
using CrystalDecisions.ReportAppServer.ClientDoc;
using CrystalDecisions.ReportAppServer.Controllers;
using CrystalDecisions.ReportAppServer.DataDefModel;
using CrystalDecisions.ReportAppServer.ReportDefModel;
using CrystalDecisions.ReportAppServer.CommonObjectModel;
using CrystalDecisions.ReportAppServer.ObjectFactory;
代码:
public Form1()
{
InitializeComponent();
CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
ISCDReportClientDocument reportClientDocument;
// Load Report
reportDocument.Load(@"C:\myReport.rpt");
reportClientDocument = reportDocument.ReportClientDocument;
// Access Field
FieldObject fieldObject = (FieldObject)reportClientDocument.ReportDefinition.DetailArea.Sections[0].ReportObjects["DateField1"];
// These work, if I want to use one of the default formats
// fieldObject.FieldFormat.DateFormat.SystemDefaultType = CrDateSystemDefaultTypeEnum.crDateSystemDefaultTypeUseLongDate;
// fieldObject.FieldFormat.DateFormat.SystemDefaultType = CrDateSystemDefaultTypeEnum.crDateSystemDefaultTypeUseShortDate;
// I don't want to use one of the defaults.
fieldObject.FieldFormat.DateFormat.SystemDefaultType = CrDateSystemDefaultTypeEnum.crDateSystemDefaultTypeNotUsingDefaults;
// I want to change the order of the values
fieldObject.FieldFormat.DateFormat.DateOrder = CrDateOrderEnum.crDateOrderDayMonthYear;
// Display the report in the viewer
crystalViewer.ReportSource = rpt.rcd.ReportSource;
}
我假设我在这里遗漏了一些关于对象模型的东西,但我找不到任何好的参考。有人可以帮我吗?
谢谢!