场景:报表中需要打印用户的签名图片,如果没有签名图片则显示用户姓名。
效果如下图所示:
报表样式如下图所示:
实现思路:
签名图片位置放置一个PictureObject(绑定图片),PictureObject下面再放一个TextObject(文本控件),设置TextObject的Visible属性为false。为PictureObject添加一个AfterData事件,如下图:
事件代码如下:
private void Picture1_AfterData(object sender, EventArgs e)
{
PictureObject pic = sender as PictureObject;
if(pic == null) return;
//获取报表的数据源
DataSourceBase data = Report.GetDataSource("picture");
DataRow dr = data.CurrentRow as DataRow;
//获取图片
byte[] bytes = (byte[])dr["USER_NAME_PIC"];
using(Stream sm = new MemoryStream(bytes))
{
try
{
Image img = Image.FromStream(sm);//转图片,成功则显示图片
}
catch
{
pic.Visible = false;
Text2.Visible = true;
//图片转换失败显示用户姓名
Text2.Text = dr["USER_NAME"].ToString();
}
}
}