2016-09-07 2 views
0

보고서에 바인딩되는 데이터가있는 데이터 집합이 있다고 상상해보십시오.동적 이미지 및 데이터 바인딩

이제 다른 데이터 세트에 동적 또는 동적 매개 변수를 추가하고 싶습니다. 이러한 매개 변수 또는 데이터 집합에는 이미지가 포함됩니다. 이미지는 바이트 배열에 있습니다.

RDLC 보고서를 생성 할 때이를 표시 할 수 없습니다.

  • 가 바이트 [] 배열을 확보, 코드, 외부 소스로부터의 (a URL)
  • 가 이미지의 바이트 [] 배열로 변환을 :

    내가 지금까지 한 일이다
  • 가 ReportParameter RDLC에서 다음

으로이 추가 Base64String,이 매개 변수를 추가 한 다음 이미지 컨트롤을 추가했습니다. 나는 단지 렌더링 얻을 그러나

  • = System.Convert.FromBase64String (매개 변수 TheImage.Value!)

: 그런 다음이 이미지 박스/제어, 값에 나는 다음으로 설정 "X"는 이미지를 찾지 못했지만 마치 이미지가없는 것처럼 보입니다. 내가 잘못 가고 어디

using (var rv = new ReportViewer()) 
      { 
       rv.ProcessingMode = ProcessingMode.Local; 
       rv.Reset(); 
using (var sr = new System.IO.StreamReader(@"C:\MyReport.rdlc")) 
       { 
        rv.LocalReport.LoadReportDefinition(sr); 
rv.LocalReport.EnableExternalImages = true;   
        var 

reportParameters = new List<ReportParameters>(); 
reportParameters.Add(new ReportParameter("TheImage", Convert.ToBase64String(TheExternalImage.Image); 
rv.LocalReport.SetParameters(reportParameters); 

string mimeType; 
        string encoding; 
        string fileExtension; 
        string[] streamIds; 
        Warning[] warnings; 
        var streambytes = rv.LocalReport.Render(format.ToString(), null, out mimeType, out encoding, out fileExtension, out streamIds, out warnings); 
        rv.LocalReport.ReleaseSandboxAppDomain(); 
} 
} 

모든 아이디어 : 보고서를 렌더링하는

코드는 더 많거나 적은 다음 (만 붙여 수입 비트)이다?

답변

2

이렇게하려면 이미지 바이트 배열을 기본 64 문자열로 변환하고 해당 문자열을 매개 변수로 전달합니다 (이미이 작업을 수행하고 있습니다). 그런 다음 이미지를 원본으로 데이터베이스로 설정하고 이미지 필드에 MIME 유형을 올바르게 설정 한 다음 매개 변수를 소스로 사용하십시오.

대부분의 경우 누락 된 이미지 소스를 데이터베이스에 설정하고있는 것 같습니다.

enter image description here

+0

감사합니다. 문제는 이미지가 데이터베이스에없는 것입니다. RDLC로 전달되는 외부 소스에서 온 것입니다. MIME 형식이 이미 올바르게 설정되었습니다. –

+0

OK, 테스트 후 - 작동했습니다! 감사!! –