VB.Net:如何在报表中使用Object数据源(.rdlc)
我的问题类似于
this one,但我在实际实现方面遇到了一些问题.
我在3层应用的业务层中有一个报告(.rdlc). 我在BL(EmployeeManager)中有一个对象,它有一个GetEmployees(表达式为表达式(Of Func(Of Employee,Boolean)))作为IQueryable(Of Employee)方法. 因为我不想尝试直接传递lambda(至少在我工作之前没有),我在BL中创建了一个ReportData类,它包装GetEmployees()调用并将结果公开为IEnumerable(Of Employee) – 应该非常简单.它目前甚至没有参数. 好的……所以在我的报告中,我试图添加一个新的数据源.我选择了一种Object并找到了上面提到的ReportData类.向导完成并向项目添加DataSources文件夹,其中有一些XML定义了< GenericObjectDataSource>并指向Report类. ReportData也出现在“数据源”窗格中 – 它有一个>旁边,但当我扩展它,它没有孩子. 我不知道怎么做是使用数据源 – 它似乎没有公开任何方法/成员(我甚至没有指定它应该调用GetEmployees()!)我当然看不到任何地方的IEnumerable(Of Employee). 当我尝试向报表添加表并提示我选择数据集时,ReportData数据源不会显示在数据源下拉列表中. 我错过了什么?有人可以指出我正确的方向吗? 我简单的ReportData对象: Namespace Reports Public Class ReportData Private Property EmployeeManager As Interfaces.IEmployeeManager Public Sub New() ''This sub is here in case it's an instantiation problem - I intend to use dependency injection when I've got this working properly. Me.EmployeeManager = New EmployeeManager End Sub Public Sub New(ByVal EmployeeManager As Interfaces.IEmployeeManager) Me.EmployeeManager = EmployeeManager End Sub Public Function GetEmployees() As IEnumerable(Of Employee) Return EmployeeManager.GetEmployees() End Function End Class End Namespace 我还发现了this,这似乎表明我正在遵循正确的步骤,但属性没有按预期显示
这不会发生 – 属性永远不会出现 编辑:正如亚历克斯所指出的,我需要使用属性而不仅仅是任何方法.请参阅下面的Alex Esselfie的答案以获得澄清.这仍然没有解决我的问题,但让我更近了一步……
根据您的描述和附带的代码,ReportData类中没有属性.如果我认为,该类应该生成您想要在报表上显示的IEnumerable.
如果是这种情况,则必须在向导中选择Employee类作为DataSource.这样您就可以在报告中显示数据. 我将研究一个快速项目并立即将其添加到此答案中. 编辑1 如何将类绑定到报表 Visual Studio 2008 >在“设计视图”中打开报表. Visual Studio 2010 >在“设计视图”中打开报表. 创建新数据源 >选择对象,然后单击下一步. 将类绑定到报表后,继续像往常一样设计报表. 编辑2 我为你上传了一个示例项目.这是link.如果您需要进一步说明,请通知我,这样我就如何复制项目给您一步一步的程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |