现在的位置: 首页 > 综合 > 正文

用子报表动态显示图片

2012年01月10日 ⁄ 综合 ⁄ 共 1322字 ⁄ 字号 评论关闭
  我们在做个人简历之类报表的时候,往往要在报表中显示图片,如果不是使用“DetailSection”,那必须得插入一个子报表来显示图片。
  建立子报表数据源文件:
 1<?xml version="1.0" ?>
 2<xs:schema id="zp" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 3    <xs:element name="zpb">
 4        <xs:complexType>
 5            <xs:sequence>
 6                <xs:element name="zpdata" type="xs:base64Binary" minOccurs="0" />
 7            </xs:sequence>
 8        </xs:complexType>
 9    </xs:element>
10</xs:schema>

  用代码为子报表创建数据源,子报表名称为Zp,strZp即是图片的文件名:

                DataSet dtsZp = new DataSet();
                DataTable dtblZp 
= new DataTable();
                dtblZp.Columns.Add(
"zpdata"typeof(byte[]));
                DataRow drow 
= dtblZp.NewRow();
                drow[
0= GetFileStream(strZp);
                dtblZp.Rows.Add(drow);
                dtsZp.Tables.Add(dtblZp);
                rpt.Subreports[
"Zp"].SetDataSource(dtsZp);

  函数GetFileStream是将文件读入到流中:

 1        private byte[] GetFileStream(string FileName)
 2        {
 3            FileStream fstr = new FileStream(Server.MapPath("images/upload/zp/" + FileName), FileMode.Open);
 4            BinaryReader brd = new BinaryReader(fstr);
 5            byte[] b = new byte[fstr.Length];
 6            b = brd.ReadBytes((int)fstr.Length);
 7            fstr.Close();
 8            return b;
 9        }

10

抱歉!评论已关闭.