知识大全 水晶报表动态加载图片
Posted 知
篇首语:宁愿跑起来被拌倒无数次 也不要规规矩矩走一辈子。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 水晶报表动态加载图片相关的知识,希望对你有一定的参考价值。
首先创建水晶报表rpt文件 方法还是采用xsd数据集的方式 简便容易操作 记得将数据集中的相关字段设为你想要在报表中呈现的字段 比如说在内容左边加入一个图片 就将相应的图片字段拖放过去 能不能直接在水晶报表上添加一个图片然后修改?我做了几次实验 好像都不得要领 所以还是放弃 走最老式的方式 先在数据库中创建一个准备在水晶报表中使用到的字段的表 然后再通过这张表创建数据集xsd文件 再通过数据集创建水晶报表 虽然方法绕了路 但是绝对是可行的
通过数据集创建dataset
DataSet pictureTabDataTable pt = new DataSet pictureTabDataTable();
DataSet TableAdapters pictureTabTableAdapter da =
new DataSet TableAdapters pictureTabTableAdapter();
da Fill(pt);
CrystalReport cr = new CrystalReport ();
cr SetDataSource((DataTable)pt);
this crystalReportViewer ReportSource = cr;
表名叫做pictureTab 因此创建的数据集有表pictureTabDataTable类和适配器pictureTabTableAdapter 奇怪的是前面的命名空间 着实没有找到 不过无关要害
通过数据库创建Dataset
SqlConnection conn = new SqlConnection( Data Source=(Local);Initial Catalog=MyDB;User ID=sa;Password=yamato );
SqlDataAdapter da = new SqlDataAdapter( select * from pictureTab where name = e conn);
DataSet ds = new DataSet();
da Fill(ds NewTable );
CrystalDecisions CrystalReports Engine ReportDocument doc = new CrystalDecisions CrystalReports Engine ReportDocument();
doc Load(@ C:\\Documents and Settings\\jiez\\桌面\\CrystalReportsApplication \\CrystalReportsApplication \\CrystalReport rpt );
doc SetDataSource(ds Tables[ NewTable ]);
this crystalReportViewer ReportSource = doc;
这个其实也没什么好说的 只是修改了一下报表加载的方式而已
厉害的来了 本地图片加载
DataSet ds = new DataSet();
ds Tables Add( NewTable );
ds Tables[ ] Columns Add( id Type GetType( System Int ));
ds Tables[ ] Columns Add( picture Type GetType( System Byte[] ));
ds Tables[ ] Columns Add( name Type GetType( System String ));
string picPath = @ C:\\Documents and Settings\\jiez\\My Documents\\My Pictures\\logo jpg ;
AddOneRow(ds Tables[ NewTable ] picPath Jackey );
CrystalDecisions CrystalReports Engine ReportDocument doc = new CrystalDecisions CrystalReports Engine ReportDocument();
doc Load(@ C:\\Documents and Settings\\jiez\\桌面\\CrystalReportsApplication \\CrystalReportsApplication \\CrystalReport rpt );
doc SetDataSource(ds Tables[ NewTable ]);
this crystalReportViewer ReportSource = doc;
public void AddOneRow(DataTable tbl string c string c string c )
FileStream fs = new FileStream(c FileMode Open);
BinaryReader br = new BinaryReader(fs);
DataRow row = tbl NewRow();
row[ ] = c ;
row[ ] = c ;
row[ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows Add(row);
这里自己创建了一个dataset 并且往里面添加了数据 都是自己进行设定 这样灵活性就很高了 要注意的是这里的数据读取采用的是BinaryReader直接就用二进制的方式进行了读取
是可以实现的
注释: AddOneRow 函数中并没有关闭数据流 fs Close();fs Close();
public void AddOneRow(DataTable tbl string c string c string c )
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
DataRow row = tbl NewRow();
row[ ] = br ReadBytes((int)br BaseStream Length);
row[ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows Add(row);
fs Close();
fs Close();
protected void Page_Load(object sender EventArgs e)
//sql
SqlConnection conn = new SqlConnection(PublicVar strCon_SHATDB);
SqlDataAdapter da = new SqlDataAdapter( select * from stamp conn);
DataSet ds = new DataSet();
da Fill(ds NewTable );
//存储过程取得ds
SqlParameter[] parms = new SqlParameter[ ];
parms[ ] = new SqlParameter( @id SqlDbType Int);
parms[ ] Value = ; //部门
DataSet ds = new DataSet();
ds = DataAccess DataAccessSHDB GetTableByStore( test parms) DataSet;
//DataSet ds = new DataSet();
string picPath = @ C:\\test\\ jpg ;
string picPath = @ C:\\test\\ jpg ;
AddOneRow(ds Tables[ ] picPath picPath );
CrystalDecisions CrystalReports Engine ReportDocument doc = new CrystalDecisions CrystalReports Engine ReportDocument();
doc Load(@ C:\\test\\ rpt );//报表已经设置签名的image字段
doc SetDataSource(ds Tables[ ]);
CrystalReportViewer ReportSource = doc;
CrystalReportViewer DataBind();
后来我根据思路重构了一下
报表的dataset中设置需要签名的字段一定要是IMAGE 路径保存在数据中
public void AddOneRow(DataTable tbl string c string c string c string c string c string c string c )
//FileStream fs = new FileStream(c FileMode Open);
//FileStream fs = new FileStream(c FileMode Open);
//BinaryReader br = new BinaryReader(fs );
//BinaryReader br = new BinaryReader(fs );
//DataRow row = tbl NewRow();
//row[ ] = c ;
//row[ ] = br ReadBytes((int)br BaseStream Length);
//row[ ] = br ReadBytes((int)br BaseStream Length);
//fs Close();
//fs Close();
//tbl Rows Add(row);
for (int i = ; i < tbl Rows Count; i++) //如果在头部那么第一行就够了 如果在尾部最后一行就OK 如果在Group 中就必须所有行
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
FileStream fs = new FileStream(c FileMode Open);
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
BinaryReader br = new BinaryReader(fs );
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
tbl Rows[i][ ] = br ReadBytes((int)br BaseStream Length);
fs Close();
fs Close();
fs Close();
fs Close();
fs Close();
fs Close();
fs Close();
//tbl Rows Add(row);
private void CrystalReportDataBind(int id)
SqlParameter[] parms = new SqlParameter[ ];
parms[ ] = new SqlParameter( @id SqlDbType Int);
parms[ ] Value = id; //部门
DataSet ds = new DataSet();
ds = DataAccess DataAccessSHDB GetTableByStore( project parms) DataSet;
//以下部分是读取本地图片
string strURL = select u stamp_path from taskline tl left join users u on tl UserID=u [ID] where taskcode= +lbl_taskcode Text+ and TurnTo= AND Result= Y ;
string[] picPath=new string[ ];
for(int i= ;i<= ;i++)
if (string IsNullOrEmpty(PublicFunction StringGetValue(strURL + and taskline= + (i + ) )) == false) //取得已经审批人的本地签名地址
//picPath[i] = @ + PublicFunction StringGetValue(strURL + and taskline= + (i + ) );
//string urlPath = Server MapPath( \\\\Reports\\\\ +PublicFunction StringGetValue(strURL + and taskline= + (i + ) ));//无法动态解析服务器地址
picPath[i] = PublicFunction StringGetValue(strURL + and taskline= + (i + ) ); //保存本地地址
else
switch (i)
case :
picPath[i] = @ C:\\stamp\\空白 jpg ; //空白地址页面 防止进程同时被占用
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
case :
picPath[i] = @ C:\\stamp\\空白 jpg ;
break;
//string picPath = @ C:\\test\\ jpg ;
//string picPath = @ C:\\test\\ jpg ;
AddOneRow(ds Tables[ ] picPath[ ] picPath[ ] picPath[ ] picPath[ ] picPath[ ] picPath[ ] picPath[ ]);
CrystalDecisions CrystalReports Engine ReportDocument doc = new CrystalDecisions CrystalReports Engine ReportDocument();
string reportPath = Server MapPath( \\\\Reports\\\\project rpt );
//doc Load(@ C:\\test\\ rpt );
doc Load(reportPath);
doc SetDataSource(ds Tables[ ]);
CrystalReportViewer ReportSource = doc;
CrystalReportViewer DataBind();
cha138/Article/program/net/201311/12882相关参考
net制作水晶报表分以下个步骤 新建一个windowsapplicationCristalTest; 新添加一个数据集DataSetxsd 在DataSet里添加表DataTable
Delphi水晶报表打包解决 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!开发环境
Asp.Net中使用水晶报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下内容为程序代码:
VS2010水晶报表的使用方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在VS中新建一个“
知识大全 vivox13l手机qq上加载图片老是显示加载图片失败什么情况
vivox13l手机qq上加载图片老是显示加载图片失败什么情况您好!根据您的描述,建议您尝试以下操作:1、建议您更换网络试试的。2、您可以进入设置--更多设置--应用程序--已安装,找到QQ,点击清除
Asp.net水晶报表之打印和导出格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在ASPN
手机qq空间图片怎么加载不了您好,看看是不是你禁止加载图片了,或者清除一下浏览器的缓存,希望我的回答能够帮助你,望采纳,谢谢。手机QQ空间为什么不能加载大图片你好!首先打开手机QQ空间,【我的空间】—
vivo手机加载不了图片怎么办?手机加载不了图片,可以按以下方法解决:1、确认手机网络是否良好,更换网络再加载;2、可能是软件服务器存在问题,换一个时间段再尝试;3、软件存在异常数据,进入设置--更多
手机QQ无法加载图片,是怎么回事?就是和人聊天时的图片看不了,说“图片加载失败” 以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,
手机进网站为什么总是加载不出图片啊信号不好,加载不出来1、查看手机网络是否稳定。若网络不稳定,可能会出现显示图片较慢或不显示图片的情况。2、查看微信中的其他图片是否可以正常读取,排除是否为图片问题。3