Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用报表和子报表的Crystal报表_C#_Visual Studio 2010_Crystal Reports - Fatal编程技术网

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

C# 使用报表和子报表的Crystal报表,c#,visual-studio-2010,crystal-reports,C#,Visual Studio 2010,Crystal Reports,假设我有以下几点: public class MyObject { public string Name {get; set;} public List<MySubObject> SubObjects {get; set;} } public class MySubObject { public string SubName {get; set;} } 公共类MyObject { 公共字符串名称{get;set;} 公共列表子对象{get;set;} } 公共类

假设我有以下几点:

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

public class MySubObject
{
   public string SubName {get; set;}
}
公共类MyObject
{
公共字符串名称{get;set;}
公共列表子对象{get;set;}
}
公共类MySubObject
{
公共字符串子名称{get;set;}
}

有没有一种方法可以设置一个报表和子报表来显示
MyObjects
(每个都有各自
MySubObjects
的子报表列表?

我认为您的类定义缺少
列表的名称:

然后将crystal report数据源指向数据集:

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

我认为您的类定义缺少
列表的名称:

然后将crystal report数据源指向数据集:

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

我给出的示例是针对这个问题构建的-这些不是我真正的类,但很相似。我从未使用过数据集。到目前为止,我一直在使用
IEnumerable
其中t是
MyObject
。首先创建数据表,然后将其用作报告源是否有更多的优势?据我所知您通常会为某种形式的数据库提供连接详细信息——但根据您希望传递的内容,数据集是mindI唯一应该添加的内容——取决于您希望的复杂性和灵活性,您不必硬编码列名——您可以迭代从技术上讲,我正在使用Entity Framework 4,但Crystal Reports似乎不太好,所以我一直在使用简单的中间对象。从这些中间对象中,我可以非常轻松地将我的项目拖放到报表上。我不想以编程方式设置报表-这对可维护性不利City。我给出的示例是针对这个问题构建的-这些不是我真正的类,但类似。我从未使用过数据集。到目前为止,我一直在使用
IEnumerable
,其中t是
MyObject
。根据我的理解,首先创建数据表,然后将其用作报告源是否有更多的优势您只能将哪些内容传递为报表源。您通常会为某种形式的数据库提供连接详细信息-但根据您希望传递的内容,数据集是Spring to mindI还应添加的唯一内容-取决于您希望的复杂性和灵活性,您不必硬编码列名-您可以这样做从技术上讲,我正在使用Entity Framework 4,但Crystal Reports似乎不太好,所以我一直在使用简单的中间对象。从这些中间对象中,我可以非常轻松地将我的项目拖放到报表上。我不想以编程方式设置报表-这对维护不利能力。
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();