VB.Net:如何在报表(.rdlc)中使用对象数据源
我的问题与类似,但我在实际实现中遇到了一些问题 我在三层应用程序的业务层中有一个报告(.rdlc) 我在BL(VB.Net:如何在报表(.rdlc)中使用对象数据源,.net,reporting-services,reporting,rdlc,objectdatasource,.net,Reporting Services,Reporting,Rdlc,Objectdatasource,我的问题与类似,但我在实际实现中遇到了一些问题 我在三层应用程序的业务层中有一个报告(.rdlc) 我在BL(EmployeeManager)中有一个对象,它有一个GetEmployees(表达式为表达式(函数(函数,布尔值)))作为IQueryable(员工的)方法 由于我不想尝试直接传递lambda(至少在我找到工作之前是这样),所以我在BL中创建了一个ReportData类,它封装了GetEmployees()调用,并将结果作为IEnumerable(Of Employee)公开,这应该非
EmployeeManager
)中有一个对象,它有一个GetEmployees(表达式为表达式(函数(函数,布尔值)))作为IQueryable(员工的)
方法
由于我不想尝试直接传递lambda(至少在我找到工作之前是这样),所以我在BL中创建了一个ReportData
类,它封装了GetEmployees()
调用,并将结果作为IEnumerable(Of Employee)公开,这应该非常简单。它现在甚至没有参数
好的。。。所以在我的报告中,我尝试添加一个新的数据源。我选择了一种类型的对象
,并找到了上面提到的ReportData
类。向导将完成并向项目中添加一个DataSources文件夹,其中包含一些定义
并指向报表的XML
ReportData
也会出现在数据源窗格中-它旁边有一个
,但当我展开它时,它没有子项
我不知道如何使用数据源——它似乎没有公开任何方法/成员(我甚至还没有指定它应该调用GetEmployees()
),而且我肯定在任何地方都看不到IEnumerable(Of Employees)
当我尝试向报表中添加表并提示我选择数据集时,ReportData数据源不会显示在数据源下拉列表中
我错过了什么?有人能给我指一下正确的方向吗
我的简单ReportData对象:
命名空间报告
公共类报表数据
私有财产EmployeeManager作为接口。IEEmployeeManager
公共分新()
''如果这是一个实例化问题,这个子组件就在这里-我打算在它正常工作时使用依赖注入。
Me.EmployeeManager=新员工经理
端接头
Public Sub New(ByVal EmployeeManager作为接口.ieemployeemanager)
Me.EmployeeManager=EmployeeManager
端接头
公共函数GetEmployees()作为IEnumerable(雇员的)
Return EmployeeManager.GetEmployees()
端函数
末级
结束命名空间
我还发现,这似乎表明我在遵循正确的步骤,但属性并不像预期的那样出现
该类的公共属性现在显示在“数据源”窗口中,可以在其中拖放到报表中
这不会发生-属性永远不会出现
编辑:正如Alex指出的,我需要使用属性,而不仅仅是任何方法。请参见下面Alex Esselfie的回答以获得澄清。这仍然没有解决我的问题,但让我更接近了…从您的描述和附带的代码来看,ReportData
类中没有属性。如果我计算得很好,那么该类应该生成要显示在报表上的IEnumerable
如果是这种情况,您必须在向导中选择Employee
类作为数据源。这将允许您在报告中显示数据
我将做一个快速的项目,并将其添加到这个答案中
编辑1
如何将类绑定到报表
Visual Studio 2008
在设计视图中打开报告
从菜单栏中选择数据
显示数据源
在数据源窗口中单击添加新数据源
选择对象,然后单击下一步
浏览解决方案树并选择要绑定到的类。
在本例中,您绑定到Employee类
单击“下一步”,然后单击“完成”
Visual Studio 2010
在设计视图中打开报告
从菜单栏中选择查看报告数据
在“数据源”窗口上单击“新建”
数据集…
- 选择对象,然后单击下一步
- 浏览解决方案树并选择要绑定到的类
- 单击Finish
将类绑定到报表后,继续像往常一样设计报表
编辑2 我为您上传了一个示例项目。这是我的建议。
如果您需要进一步的澄清,请通知我,我将逐步向您介绍如何复制该项目。我也遇到了同样的问题。我必须向表示层添加一个数据源(对象类型),该数据源指向业务层中的对象(具有属性类的集合)。我在表示层中创建了报告(.rdlc),并将其指向数据源和一切正常工作的地方。这是我发现的向报表公开字段属性的唯一方法。在运行时,我将报表数据源绑定到集合。我喜欢在业务层设计一个“平面”集合,处理数据并将其发送给rdlc,使报告尽可能“哑”。谢谢-你的意思是它实际上必须是一个属性而不是一个函数吗?我很感激这个示例项目,但我也会测试它…好的,将它更改为属性让我更进一步-我现在可以在“数据源”窗格中的数据源上看到一个子元素(GetEmployees())-但是当我添加一个表时,它仍然没有列出,它要求我提供一个数据集-我需要做些什么来使用da吗