VB.Net:如何在报表中使用Object数据源(.rdlc)

时间:2010-09-15 12:21:50

标签: .net reporting-services reporting rdlc objectdatasource

我的问题类似于this one但我在实际实施方面遇到了一些问题。

我在3层应用的业务层中有一个报告(.rdlc)。

我在BL(EmployeeManager)中有一个具有GetEmployees(Expression as Expression(Of Func(Of Employee, Boolean))) As IQueryable(Of Employee)方法的对象。

因为我不想尝试直接传递lambda(至少在我工作之前没有),我在BL中创建了一个ReportData类来包装{{1调用并将结果公开为IEnumerable(Of Employee) - 这应该非常简单。它目前甚至没有参数。

好的......所以在我的报告中,我试图添加一个新的数据源。我选择了一种GetEmployees()并找到了上面提到的Object类。向导完成并向项目添加一个DataSources文件夹,其中有一些XML定义ReportData并指向<GenericObjectDataSource>类。

Report也出现在“数据源”窗格中 - 它旁边有一个ReportData但是当我展开它时,它没有子项。

我不知道怎么做是使用数据源 - 它似乎没有暴露任何方法/成员(我甚至没有指定它应该调用>!)和我当然无法在任何地方看到GetEmployees()

当我尝试向报表添加表格并提示我选择数据集时,ReportData数据源不会显示在数据源下拉列表中。

我错过了什么?有人可以指出我正确的方向吗?

我简单的ReportData对象:

IEnumerable(Of Employee)

我还发现this似乎表明我正在按照正确的步骤操作,但属性没有按预期显示

  

该类的公共属性现在显示在“数据源”窗口中,可以将它们拖放到报表中。

这不会发生 - 属性永远不会出现

编辑:正如亚历克斯所指出的,我需要使用属性,而不仅仅是使用任何方法。请参阅下面的Alex Esselfie的答案以获得澄清。这仍然没有解决我的问题,但让我更近了一步......

2 个答案:

答案 0 :(得分:4)

根据您的说明和随附的代码,ReportData类中没有属性。如果我认为,该类应该生成您想要在报告上显示的IEnumerable

如果是这种情况,您必须在向导中选择 Employee 类作为DataSource。这样您就可以在报告中显示数据。

我将在快速项目上工作并立即将其添加到此答案中。



修改1

如何将类绑定到报告

Visual Studio 2008

  1. 设计视图中打开报告。
  2. 从菜单栏中选择Data&gt; Show Data Sources
  3. 在“数据源”窗口中单击添加新数据源
  4. 选择对象,然后点击下一步
  5. 浏览解决方案树并选择要绑定的类 在您的情况下,您绑定到 员工 类。
  6. 点击下一步,然后点击完成

  7. Visual Studio 2010

    1. 设计视图中打开报告。
    2. 从菜单栏中选择View&gt; Report Data
    3. 点击New&gt; “数据源”窗口中的Dataset...
    4. 输入数据集的名称(例如员工)
    5. 创建新数据源或选择现有数据源。

      创建新数据源

      • 选择对象,然后点击下一步
      • 浏览解决方案树并选择要绑定的类。
      • 点击完成

    6. 将类绑定到报表后,请继续照常设计报表。


      修改2

      我为您上传了一个示例项目。这是link 如果您需要进一步澄清,请通知我,以便我逐步介绍如何复制项目。

答案 1 :(得分:1)

我遇到了同样的问题。我不得不在我的表示层添加一个数据源(对象类型),该层在业务层(带有属性类的集合)中指向我的对象。我在表示层创建了报告(.rdlc),并将其指向数据源,并且工作正常。这是我发现将字段属性公开给报表的唯一方法。在运行时,我将报表数据源绑定到集合。我喜欢在业务层设计一个“扁平”集合,处理数据并将其发送到rdlc,使报告尽可能“愚蠢”。