C# 如何在Visual Studio 2008的Crystal Reports中迭代嵌套的.NET列表?

C# 如何在Visual Studio 2008的Crystal Reports中迭代嵌套的.NET列表?,c#,.net,visual-studio-2008,list,crystal-reports,C#,.net,Visual Studio 2008,List,Crystal Reports,我在Visual Studio 2008 C中有一个Crystal报表。它的数据源在运行时以编程方式设置为.NET列表,定义如下: List<visit_volume> Visits 因此,输入Crystal Report的是一个visit_volume对象列表,它本身包含一个mEvent对象列表 在Crystal Reports中,我可以看到访问列表的内容,但我无法访问和报告events成员的内容-它只是不显示。这是因为Crystal无法处理嵌套列表结构,还是我做错了什么 提前感

我在Visual Studio 2008 C中有一个Crystal报表。它的数据源在运行时以编程方式设置为.NET列表,定义如下:

List<visit_volume> Visits
因此,输入Crystal Report的是一个visit_volume对象列表,它本身包含一个mEvent对象列表

在Crystal Reports中,我可以看到访问列表的内容,但我无法访问和报告events成员的内容-它只是不显示。这是因为Crystal无法处理嵌套列表结构,还是我做错了什么


提前感谢。

我认为尽管Crystal将“外部”列表理解为行的数据表,但该行中字段的数据类型必须是标准数据库类型。例如,如果您正在创建SqlServer表并尝试添加字段,则不允许您选择“列表”作为该字段的数据类型

我认为您可能需要将嵌套列表中的所有值放在一个单独的对象/表中,然后让Crystal在这两个表之间形成关系


我不确定您将如何提供这两个对象作为数据源-您可能需要在Visual Studio中声明一个数据集,让Crystal将其报告建立在该结构的基础上,然后将这两个对象作为.NET数据集对象中的单独表传递。

仔细考虑后,对此的答案可能是包含一个子报告,该子报告仅将事件结构作为其数据源

public class visit_template
{
    private int _numberOfVisits;
    public int numberOfVisits
    {
        get { return this._numberOfVisits; }
        set { this._numberOfVisits = value; }
    }

    // other ints and doubles declared here
    // ..
    // ..

    private List<mEvent> _events;
    public List<mEvent> events
    {
        get { return this._events; }
        set
        {
            // updates _numberOfVisits here
            // ..
            // build-up a debugging string of each mEvent
            // ..
        }
    }
}