2012-02-14 2 views
3

내 시나리오는 내 보고서가 들어있는 DLL을 만들고 주 프로젝트에 해당 DLL을 추가하는 것입니다. 내 보고서는 임베디드 리소스로 설정되어 있으며 내 기본 프로젝트에서는 다음을 수행하여 ReportViewer에 보고서를 설정합니다.C# DLL에서 보고서를 가져 와서 보고서 뷰어에 넣으십시오.

Assembly assembly = Assembly.LoadFrom("MyAssembly.dll"); 
Stream stream = assembly.GetManifestResourceStream("MyAssembly.Reports.MyReport.rdlc"); 
MyReportViewer.LocalReport.LoadReportDefinition(stream); 
MyReportViewer.RefreshReport(); 

이제이 작업을 수행 할 때 ReportParameters를 설정할 수 있기 때문에 보고서가 다소로드되고 있다는 것을 알았습니다. 그것이 전혀로드되지 않은 경우 매개 변수가 존재하지 않거나 그 효과가 있다는 것을 나타내는 예외를 던질 것입니다.

내 보고서가 매개 변수를로드하고 RefreshReport()를 호출 할 때 발생하는 현상입니다.

보고서 정의의 원본이 지정되지 않았습니다.

왜 이런 일이 발생했는지에 대한 단서가 있습니까? dll에서 보고서를로드 할 때 뭔가 빠져있을 수도 있습니다. 그러나 인터넷을 샅샅이 뒤 졌을 때 이것이 올바른 해결책 인 것처럼 보였습니다.

부수적으로, 나는 .dll 안에있는 양식을 가지고 있는데, 나는보고하고 완벽하게 정상적으로 보고서를로드했다. 그러나 그 양식은 해당 보고서의 위치를 ​​구체적으로 알고 있기 때문에 다른 경우입니다.

이 상황에서 나는 .dll 안에없는 ReportViewer를 가지고 있으며 .rdll 내 .dll을 내 ReportViewer에로드하려고합니다. 내 ReportViewer는 DLL 안에 없습니다.

편집 다음 코드를 사용하면 DLL에 필요한 파일을 볼 수 있습니다.

string[] resources = assembly.GetManifestResourceNames(); 

"MyApp.Controls.Reports.MyCustomReport.rdlc"절차의 시작 부분에 코드의

+0

안녕하세요, 당신을했다 당분간 해결책을 찾으시겠습니까? – Raphael

답변

1

이 작은 조각은 내 문제 해결

MyReportViewer.Reset(); 
+1

실제로 저를 도왔습니다. 대답으로 추가하는 것을 잊었습니다. – meanbunny

관련 문제