简体   繁体   English

使用报表和子报表的Crystal报表

[英]Crystal Reports using Report and SubReport

Suppose I have the following: 假设我有以下内容:

public class MyObject
{
   public string Name {get; set;}
   public List<MySubObject> SubObjects {get; set;}
}

public class MySubObject
{
   public string SubName {get; set;}
}

Is there a way I can set up a report and sub report to show a list of MyObjects (each with a list of subreports for their respective MySubObjects ? 有没有一种方法可以设置报告和子报告以显示MyObjects列表(每个报告都包含各自MySubObjects子报告列表?

I think your class definition is missing the name of the List<MySubObject> : 我认为您的类定义缺少List<MySubObject>的名称:

public class MyObject
{
   public string Name {get; set;}
   public List<MySubObject> SubObjects {get; set;}
}

public class MySubObject
{
   public string SubName {get; set;}
}

You can loop through and populate a dataset (you don't really need to use subreports, uness your data is more complex than you've described above): 您可以遍历并填充数据集(您实际上不需要使用子报表,除非您的数据比上面描述的还要复杂):

DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("SubReport");
foreach (MyObject myo in list_of_myobjects)
{
 foreach (MySubObject myso in myo.SubObjects)
 {
  DataRow dr = dt.NewRow();
  dr[0] = myo.Name;
  dr[1] = myso.SubName;
  dt.Rows.Add();
  ds.Tables.Add(dt);
 }
}

Then point your crystal report datasource at the dataset: 然后将水晶报表数据源指向数据集:

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh(); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM