作成日: 2018/02/28 最終更新日: 2019/11/22
文書種別
使用方法
詳細
レポート上に表示する画像を動的に変更する方法は、レポートの形式によって異なります。
詳細については、製品ヘルプの以下のトピックをご参照ください。
よくある質問 - セクションレポート - レイアウト - 「画像を動的に読み込む」
なお、DetailのFormatイベントでPicture.Imageプロパティを設定することもできますが、画像のファイルパスがデータソースに含まれている場合などは、アンバウンドフィールドを経由して設定したほうが確実にデータと同期できます。基本的にはこちらの方法を推奨します。
◆サンプルコード(C#)
◆サンプルコード(VB.NET)
また、ValueプロパティにIIF関数などを使用した「式」を設定することで、条件に応じて表示する画像を動的に変更することも可能です。
たとえば、以下のような式で、フィールド「ID」の値が奇数の時は、プロジェクトの「image」フォルダに含まれる"1.jpg"を、偶数の時は"2.jpg"を表示します。
また、以下のようにプロジェクトに含まれていない画像を表示させることも可能です。
セクションレポートの場合
System.Drawing.Imageクラスのメソッドを使用することで、Pictureコントロールに動的に画像を読み込むことが可能です。詳細については、製品ヘルプの以下のトピックをご参照ください。
よくある質問 - セクションレポート - レイアウト - 「画像を動的に読み込む」
なお、DetailのFormatイベントでPicture.Imageプロパティを設定することもできますが、画像のファイルパスがデータソースに含まれている場合などは、アンバウンドフィールドを経由して設定したほうが確実にデータと同期できます。基本的にはこちらの方法を推奨します。
◆サンプルコード(C#)
private void SectionReport1_DataInitialize(object sender, EventArgs e)
{
// アンバウンドフィールドを追加する
this.Fields.Add("image1");
this.picture1.DataField = "image1";
}
private void SectionReport1_FetchData(object sender, FetchEventArgs eArgs)
{
// データフィールドから画像のファイルパスを取得する
var filepath = this.Fields["filepath"].Value.ToString();
// アンバウンドフィールドに画像を設定する
using (var fs = new FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
this.Fields["image1"].Value = new Bitmap(System.Drawing.Image.FromStream(fs));
}
}
◆サンプルコード(VB.NET)
Private Sub SectionReport1_DataInitialize(sender As Object, e As EventArgs) Handles MyBase.DataInitialize
' アンバウンドフィールドを追加する
Me.Fields.Add("image1")
Me.Picture1.DataField = "image1"
End Sub
Private Sub SectionReport1_FetchData(sender As Object, eArgs As FetchEventArgs) Handles MyBase.FetchData
' データフィールドから画像のファイルパスを取得する
Dim filepath As String = Me.Fields("filepath").Value.ToString()
' アンバウンドフィールドに画像を設定する
Using fs As New FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Me.Fields("image1").Value = New Bitmap(System.Drawing.Image.FromStream(fs))
End Using
End Sub
ページレポート/RDLレポートの場合
ImageコントロールのSourceプロパティを"External"に設定し、Valueプロパティに画像のファイルパスを設定することで、表示する画像を動的に変更することが可能です。また、ValueプロパティにIIF関数などを使用した「式」を設定することで、条件に応じて表示する画像を動的に変更することも可能です。
たとえば、以下のような式で、フィールド「ID」の値が奇数の時は、プロジェクトの「image」フォルダに含まれる"1.jpg"を、偶数の時は"2.jpg"を表示します。
=IIF(Fields!ID.Value mod 2 = 1,"image¥1.jpg", "image¥2.jpg")
また、以下のようにプロジェクトに含まれていない画像を表示させることも可能です。
=IIF(Fields!ID.Value mod 2 = 1,"c:¥data¥1.jpg", "c:¥data¥2.jpg")
関連情報
旧文書番号
41492