2017-03-08 2 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 

(예를 들어)이 방법을 반영해야한다, 나는 자원을 복사하고 경로가 작동 희망에 대해 걱정할 필요가 없습니다. 나는 그것이 내장되어 있으며 어셈블리 안에서 어디에 있는지 알고 있습니다.