C#&;DevExpress报告:动态参数

C#&;DevExpress报告:动态参数,c#,parameters,devexpress,report,C#,Parameters,Devexpress,Report,我为这个难以理解的标题感到抱歉 通常,要使用Devexpress报告参数,我们必须: 在“参数”面板(字段列表)中创建参数 调用报表时指定参数,或在预览/打印前直接填写参数值 但是现在,我们想让它变得简单和动态,我们的想法是传递一个包含所有可能的报表参数的对象,如下所示: public class ReportParameters { public string Title{get;set;} public DateTime ReportDate{get;set;}

我为这个难以理解的标题感到抱歉

通常,要使用Devexpress报告参数,我们必须:

  • 在“参数”面板(字段列表)中创建参数
  • 调用报表时指定参数,或在预览/打印前直接填写参数值
但是现在,我们想让它变得简单和动态,我们的想法是传递一个包含所有可能的报表参数的对象,如下所示:

public class ReportParameters
{
    public string Title{get;set;}
    public DateTime ReportDate{get;set;}
    // ..... much more 
}
在报告中,我们需要做的就是分配ReportParameters的相应属性,然后类似这样:

XtraReport1 report1 = new XtraReport1(); 
ReportParameters rpara = new ReportParameters();
rpara.Title = "SomeTitle"; 
rpara.ReportDate = DateTime.Today.Date(); 
report1.ParaObjectSource = rpara ; // parameters source
report1.DataSource = reportDataSource; // data (detail) source 
report1.ShowPreview(); 
请注意,ParaObjectSource是我为了说明我的想法而编造的


我的问题是,如何将数据源对象之外的其他对象传递到报表中?

您只需在
XtraReport
子类中添加所需内容即可。
下面是一个例子:

public class XtraReport1 : XtraReport
{
    public XtraReport1()
    {
        InitializeComponent();
    }

    public ReportParameters ParaObjectSource {get; set;}

    protected override void OnBeforePrint(PrintEventArgs e)
    {
        base.OnBeforePrint(e);

        //Create parameters for report from your ParaObjectSource 
    }
}