0

我正在使用 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;

}

我假设我在这里遗漏了一些关于对象模型的东西,但我找不到任何好的参考。有人可以帮我吗?

谢谢!

4

1 回答 1

1

我需要同样的东西,最后想出了如何去做。您需要使用以下方法将修改后的字段应用于报告:

reportClientDocument.ReportDefController.ReportObjectController.Modify(fieldObject, fieldObject);
于 2009-08-19T18:42:25.107 回答