Crystal Reports 2008:C#:动态编辑日期格式

时间:2009-06-09 02:59:36

标签: c# crystal-reports date-format

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

}

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我需要同样的东西,最终想出怎么做。您需要使用以下命令将修改后的字段应用于报告:

reportClientDocument.ReportDefController.ReportObjectController.Modify(fieldObject, fieldObject);