2017-03-08 7 views
0

C#でレポートを取得しようとしています。私のような私のRDLCファイルを埋め込むしようとしています:C#「不正なパス」を処理中にエラーが報告されました

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(); 

RDLCファイル自体のビルドアクションが埋め込まれたリソースと常にコピーするように設定された出力ディレクトリにコピーに設定されています。

私は二重チェックをしましたが、これはReportEmbeddedResource文字列の正しい名前空間であると確信しています。私はレポートをロードしようとすると、しかし、私はこのエラーを取得:「」私は、このような置き換えとして、パスで周りにいくつかのことを試してみましたスイッチング

enter image description here

を'/'と '\'を使用していますが、これまでのところ私はこれを修正するための何かを得ることができませんでした。私はEmbeddedResourceの代わりにLocalPathを使ってみましたが、もう一度エラーを見つけました。

この問題を検索しましたが、これまでのところ問題を解決するための方法が見つかりませんでした。

+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

答えて

0

私は自分のアプリケーションでうまくいくレポートラッパークラスを持っています。私は実行したい ".rdlc"レポート定義の名前を保持するプロパティを持っています。次に、 "RunReport()"メソッドを呼び出すと、アプリケーションアセンブリリソースからのストリームの読み取りに基づいてレポートが割り当てられます。ショートバージョンあなたが次に

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

、低くなるかもしれない持っているもののために、私はこの方法

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

    return stream; 
} 

を持って、私はあなたのプロジェクトへのパスの命名規則の正はないですが、暗示しています上記の経路。しかし、それは

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

(例えば)この方法を反映すべきである、私はリソースをコピーし、パスが働くことを望ん心配する必要はありません。私はそれが組み込みであり、アセンブリ内でどこにあるのかを知っています。

関連する問題