2017-03-08 10 views
0

Ich versuche, die Berichterstellung in C# zu aktivieren. Ich versuche, meine rdlc Datei als solche einzubetten:C# -Berichtsfehler beim Verarbeiten des "ungültigen Pfads"

var reportDataSource = new ReportDataSource("ProspectsDataSet", _allProspects); 
ReportViewer.LocalReport.DataSources.Add(reportDataSource); 

ReportViewer.LocalReport.ReportEmbeddedResource = "SdcDatabase.Modules.EnquiryModule.View.Reports.ProspectsReport.rdlc"; 
ReportViewer.ZoomMode = ZoomMode.PageWidth; 
ReportViewer.RefreshReport(); 

Die Build-Aktion auf der rdlc Datei selbst eingebettete Ressource und die Kopie an das Ausgabeverzeichnis immer kopieren gesetzt wird.

Ich habe doppelt überprüft, und ich bin sicher, dass das der richtige Namespace in der ReportEmbeddedResource Zeichenfolge ist. Jedoch wenn ich versuche, den Bericht zu laden ich diesen Fehler: ‚‘

enter image description here

Ich habe versucht, ein paar Dinge, um auf dem Weg Schalten, wie Ersetzen mit '/' und '\' aber bis jetzt konnte ich nichts erreichen, um das zu beheben. Ich habe auch versucht, LocalPath anstelle von EmbeddedResource zu verwenden, aber wieder stoße ich auf Fehler.

Ich habe nach diesem Problem gesucht, aber bisher nichts gefunden, um mein Problem zu lösen.

+0

https://social.msdn.microsoft.com/Forums/en-US/7b259014-9bb2-424a-9c5b-37be2fcb1bef/how-to-use-reportembeddedresource-in-reportviewer-webform-control?forum=vsreportcontrols – mm8

Antwort

0

Ich habe eine Bericht Wrapper-Klasse, die gut für meine Apps funktioniert. Ich habe eine Eigenschaft, die den Namen der Berichtsdefinition ".rdlc" enthält, die ich ausführen möchte. Wenn ich dann meine "RunReport()" - Methode aufruft, ordne ich den Bericht basierend auf dem Lesen eines Streams von meiner Anwendungsassembly-Ressource zu. Eine kurze Version für das, was Sie haben könnten dann niedrigere

ReportViewer.LocalReport.LoadReportDefinition(GetRDLCStream("ProspectsReport.rdlc")); 

sein, ich habe eine Methode

private Stream GetRDLCStream(string rptRDLC) 
{ 
    var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(
        "SdcDatabase.Modules.EnquiryModule.View.Reports." + rptRDLC); 

    return stream; 
} 

Offensichtlich bin ich nicht positiv von der Namenskonvention von Ihrem Weg zu einem Projekt, aber ich was impliziert, der obige Weg. Es sollte jedoch (zum Beispiel) reflektieren

"NameOfYourApp.SubFolderWithinPath.MaybeReportsSubFolder." + actualReport.RDLC name 

Auf diese Weise habe ich nie eine Ressource über das Kopieren aus Angst und Hoffnung, die Wege zu arbeiten. Ich weiß, dass es eingebettet ist und wo in der Versammlung.

Verwandte Themen