VB.Net: Как использовать источник данных объекта в отчете (.rdlc)
Мой вопрос похож наэтот но у меня есть некоторые проблемы с реальной реализацией.
У меня есть отчет (.rdlc) на бизнес-уровне трехуровневого приложения.
У меня есть объект в BL (EmployeeManager
) который имеетGetEmployees(Expression as Expression(Of Func(Of Employee, Boolean))) As IQueryable(Of Employee)
метод.
Поскольку я не хотел пытаться передать лямбду напрямую (по крайней мере, пока у меня не получилось что-то работать), я создалReportData
класс в BL, который оборачивает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
Я также нашелэтот который, кажется, указывает, что я следую за правильными шагами, но свойства не появляются как ожидалось
Открытые свойства класса теперь отображаются в окне Источники данных, где их можно перетаскивать в отчет.
Этого не происходит - свойства никогда не появляются
РЕДАКТИРОВАТЬ: Как указал Алекс, мне нужно использоватьсвойства не просто какие-либо методы. Пожалуйста, смотрите ответ Алекса Эсфили ниже для уточнения. Это все еще не решило мою проблему, но сделало меня на шаг ближе ...