水晶报表图片显示不出来。。
水晶报表图片显示不出来(即报表页为空白)
我的实现方法如下:
1、建立数据集文件,图片字体为 base64Binary :
<xs:element name="photo" msprop:Generator_UserColumnName="photo" msprop:Generator_ColumnVarNameInTable="columnphoto" msprop:Generator_ColumnPropNameInRow="photo" msprop:Generator_ColumnPropNameInTable="photoColumn" type="xs:base64Binary" minOccurs="0" />
2、代码(图片文件路径存储在数据库中):
sqlstr = "select PF001,PF002 from PPSPF where PF001='" + PF001 + "'";
DataSet ds1 = database.GetDataSet(sqlstr);
if (ds1.Tables[0].Rows.Count > 0)
{
tempstr = Request.PhysicalApplicationPath;
DataSet ds = new DataSet();
ds.Tables.Add("NewTable");
ds.Tables[0].Columns.Add("PF001", Type.GetType("System.String"));
ds.Tables[0].Columns.Add("photo", Type.GetType("System.Byte[]"));
ds.Tables[0].Columns.Add("PF002", Type.GetType("System.String"));
for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
{
path = tempstr + ds1.Tables[0].Rows[i]["PF002"].ToString();
Addphoto(ds.Tables[0],ds1.Tables[0].Rows[i]["PF001"].ToString(),ds1.Tables[0].Rows[i]["PF002"].ToString(),path);
}
ReportDocument rdDoc = new ReportDocument();
tempstr = Server.MapPath("../rpt") + "\\" + "photorpt.rpt";
rdDoc.Load(tempstr);
rdDoc.SetDataSource(ds.Tables["NewTable"]);
rptv.ReportSource = rdDoc;
}
添加图片到Dataset的方法
void Addphoto(DataTable Table,string c1,string c2, string FilePath)
{
FileStream fileStream = new FileStream(FilePath, FileMode.Open);
BinaryReader br = new BinaryReader(fileStream);
DataRow dr = Table.NewRow();
dr[0] = c1;
dr[1] = br.ReadBytes((int)br.BaseStream.Length);
dr[2] = c2;
Table.Rows.Add(dr);
br.Close();
fileStream.Close();
} 哪位大大指点下。。。 谢谢
------解决方案--------------------没做过图片
看阿泰的这个文章
【原创】为你的水晶报表加载本地图片
------解决方案--------------------1:你报表里用的表名称是什么,是否与ds.Tables.Add("NewTable"); 这里的NewTable名称一致
2:base64Binary是VS2003里的字段类型,而在VS2005里应该用Byte[]
从这两个方面看看