.Net Crystal Report将数据源设置为自定义类对象

时间:2013-05-31 03:24:58

标签: c# .net crystal-reports reporting

这是我的项目结构

Project.Data
    Project.Data.Model
        - Customer.cs
        - Product.cs
        - Purchase.cs
        - PurchaseDetail.cs
Project.Presentation
    - PrintFrm.cs
    - TransactionFrm.cs
    Project.Presentation.Print
        - MyReport.rpt

我想在使用Crystal Report后立即打印用户的购买。

Database Expert的可用数据源中有一个选项,即.Net Objects,但它只显示来自同一项目的类,例如PrintFrm和TransactionFrm。

我需要的是将创建的Purchase对象发送到PrintFrm.cs并根据发送的对象创建MyReport.rpt。

我在PrintFrm.cs中尝试了以下内容:

public object DataSource { get; set; }
public string ReportFilename { get; set; }

private void PrintFrm_Load(object sender, EventArgs e)
{
      var reportDir = Application.StartupPath;

      if (reportDir.EndsWith("\\bin\\Debug"))
      {
          reportDir = reportDir.Replace("\\bin\\Debug", "");
      }

      var reportPath = reportDir + "\\Print\\" + ReportFilename;

      if (string.IsNullOrEmpty(ReportFilename)) { throw new NullReferenceException("Report Filename"); }
      if (DataSource.Equals(null)) { throw new NullReferenceException("Data Source"); }

      _reportDocument.Load(reportPath);
      _reportDocument.SetDataSource(DataSource);

      crystalReportViewer.ReportSource = _reportDocument;
      crystalReportViewer.RefreshReport();
}

以上确实将MyReport.rpt加载到PrintFrm.cs,但我不知道如何根据发送的Purchase对象设计报表,因为设计人员没有选择从另一个项目中选择类(在这种情况下) Project.Data.Model)。

我应该从Purchase对象创建XML并将其发送到MyReport吗?或者有一个明显的解决方案,我只是让新手知道?

非常感谢任何解决方案。

谢谢。

0 个答案:

没有答案