2016-09-07 14 views
0

レポートにバインドされたデータを持つデータセットがあるとしたら、うまくいきます。動的イメージとデータバインディング

ここで、別のデータセットに動的パラメータまたは動的パラメータを追加します。これらのパラメータ、つまりデータセットには画像が含まれます。イメージはバイト配列です。

生成時にRDLCレポートに表示することができません。

これは私がこれまでにやっていることです:

  • は、外部ソース(URL)
  • からのコードでバイト[]配列は、への画像のバイト[]配列に変換取得します
  • がRDLCに続いてReportParameter

としてこれを追加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、それをテストした後 - それは働いた!ありがとう!! –

関連する問題