OK, ich glaube, ich werde hier wütend ... Ich dachte, das sollte super einfach sein, aber ich kann einfach nicht herausfinden, wie das geht.
Das ist, was ich versuche zu tun: Ich möchte mit dem ReportViewer-Steuerelement in ASP.NET 4 (VS 2010) einen RDC-Bericht erstellen und als Datenquelle eine Klasse mit einigen Eigenschaften verwenden. Ich habe alles versucht, was mir einfällt, aber das kann ich nicht herausfinden. Alle Dokumente, die ich gefunden habe, geben an, dass das Objekt im DataSource-Bereich der Website angezeigt werden soll, aber ich kann es dort nicht erscheinen lassen. Ich möchte, dass die Felder der Klasse im Desiger-Bericht erscheinen, damit ich sie verwenden kann - aber das kann ich auch nicht. Mit dem Designer kann ich nur ein neues Dataset definieren - ich möchte nicht Dataset, sondern Business-Objekte verwenden!
Also - wie kann ich das tun? Muss ich eine Art von DataSource-Steuerelement verwenden? Wie kann ich den Berichtsdesigner über das Geschäftsobjekt informieren?
Danke!
Memi
Haben Sie dieses Tutorial gefolgt? Alles, was Sie tun müssen, ist:
Nun können Sie in Ihrem Berichts-Designer Methoden aus Business-Klassen als Dataset und Drag-and-Drop-Feld aus den DTO-Klassen auswählen Wenn Sie diesen Bericht im Berichtsviewer anzeigen, wird das Datenquellenobjekt für Sie hinzugefügt.
Ich fand dieser Blog ist sehr hilfreich.
Wenn Sie eine neue Datenquelle für Ihre DLL erstellen, im Dialog Datensatzeigenschaften:
1) Wählen Sie in der Dropdown-Liste Datenquelle den Namespace aus, der die Klasse enthält, die die öffentliche Methode enthält (siehe # 2).
2) Wählen Sie in der Dropdownliste Verfügbare Datenmengen die öffentliche Methode aus, die ein IQueryable Ihrer Geschäftsobjekte zurückgibt.
Ist Ihre Geschäftsobjektklasse als öffentlich markiert? Ich habe in einem Video gesehen, dass es öffentlich sein muss.
Ich habe das gleiche Problem und habe einen Weg gefunden. Aus irgendeinem Grund, wenn Sie eine ASP.NET-Anwendung entwickeln, nahm Microsoft neue Datenquellenfunktionalität hinzu. Der Weg ist nicht großartig, aber es funktioniert. Ich benutze alle Objekte und ich benutze die Enterprise-Bibliothek und ich möchte meine Objekte für meine Berichte verwenden. Es macht nur Sinn, warum sie das nicht ermöglichen. Ich habe keine Ahnung, warum Microsoft diese Funktionalität für Web-Apps nicht zulassen würde.
Aber das lässt Windows-Apps funktionieren, also habe ich ein separates Windows-Projekt erstellt, einschließlich meiner Objekte, an die ich in diesem Projekt binden möchte, und den Bericht über das Formular-Projekt erstellen. Ich bringe diesen Bericht dann in meine Asp.net Web App und rufe ihn über den Code an. Hier sind ein paar Code-Teile, die ich dazu benutze. Dies ist in VB, könnte aber in C # umgewandelt werden. Ich habe auch eine Dropdown-Liste, die den erforderlichen Bericht auswählt und eine case-Anweisung, die die Daten erhält.
%Vor%Tags und Links asp.net reportviewer