VB.Net: Verwenden einer Objektdatenquelle in einem Bericht (.rdlc)
Meine Frage ist ähnlich wiediese aber ich habe einige Probleme mit der tatsächlichen Implementierung.
Ich habe einen Bericht (.rdlc) in der Business-Schicht einer 3-Tier-App.
Ich habe ein Objekt in der BL EmployeeManager
) mit einemGetEmployees(Expression as Expression(Of Func(Of Employee, Boolean))) As IQueryable(Of Employee)
Methode
Da ich nicht versuchen wollte, ein Lambda direkt einzugeben (zumindest nicht, bis etwas funktioniert), habe ich ein @ erstellReportData
Klasse in der BL, die das @ umschlieGetEmployees()
call und macht die Ergebnisse als IEnumerable (Of Employee) verfügbar - was sehr einfach sein sollte. Es hat im Moment noch nicht einmal Parameter.
Ok ... In meinem Bericht habe ich versucht, eine neue Datenquelle hinzuzufügen. Ich habe eine Art von @ ausgewähObject
und fand dasReportData
Klasse oben erwähnt. Der Assistent wird abgeschlossen und fügt dem Projekt einen DataSources-Ordner hinzu, in dem XML-Code enthalten ist, der ein @ definier<GenericObjectDataSource>
und zeigt auf dasReport
Klasse.
ReportData
wird auch im Bereich Datenquellen angezeigt - Es ist ein @ vorhande>
daneben aber wenn ich es erweitere, hat es keine Kinder.
Was ich nicht weiß, wie es geht, ist die Datenquelle zu VERWENDEN - Es scheint keine Methoden / Mitglieder verfügbar zu machen (ich habe nicht einmal angegeben, dass es @ aufrufen solGetEmployees()
noch nicht!) und ich kann auf keinen Fall ein @ sehIEnumerable(Of Employee)
irgendwo
Wenn ich versuche, dem Bericht eine Tabelle hinzuzufügen, und ich aufgefordert werde, einen Datensatz auszuwählen, wird die ReportData-Datenquelle nicht in der Dropdown-Liste Datenquelle angezeigt.
Was vermisse ich? Kann mich bitte jemand in die richtige Richtung weisen?
Mein einfaches ReportData-Objekt:
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
Ich habe auch @ gefundDie was darauf hindeutet, dass ich die richtigen Schritte befolge, aber die Eigenschaften nicht wie erwartet angezeigt werden
Die öffentlichen Eigenschaften der Klasse werden jetzt im Fenster "Datenquellen" angezeigt, in dem sie per Drag & Drop in den Bericht gezogen werden können.
Das passiert nicht - die Eigenschaften erscheinen nie
BEARBEITE: Wie von Alex darauf hingewiesen, muss ich @ verwendEigenschafte nicht irgendwelche Methoden. Weitere Informationen finden Sie in der Antwort von Alex Esselfie. Das hat mein Problem immer noch nicht gelöst, hat mich aber einen Schritt näher gebracht ...