水晶报表10 打印、导出按钮不能用

原创 2007年09月18日 12:56:00
 
最近公司接了一个项目,要给客户做许多报表,并且是中国式的报表,本人就用了c#+水晶报表10进行了开发,但是中间遇到了一个问题,”动态设置水晶报表的数据源后,打印、导出、查找等按钮不能用,即使用水晶报表的工具栏时,出现的不是打印、导出、查找的结果,而是一张空白”出现这个问题挺郁闷的,于是在网上也查找了一番,但是网友们也都遇见到这个问题,都 没有给出解决的办法。无奈之下,本人专门研究了一番,最后费了十牛三虎之力,终于找到了解决的办法,下面列出来,以飨读者,希望能给遇到此问题的朋友一定的帮助。
 
WEB窗体中有两个控件,CrystalReportViewer1     CrystalReportSource1 数据源:Dataset
代码:
protected CrystalDecisions.Web.CrystalReportViewer Crv;
ReportDocument ReportDoc=new ReportDocument() ;   
 if (!IsPostBack)
{
SqlConnection sqlConnData=new SqlConnection(ConfigurationSettings.AppSettings["dsn"]) ;           
sqlConnData.Open();
string str="select * from brigderoad where (station='"+UserStr+"') or (year='"+yearStr+"') ";
//查询特定的表
     SqlDataAdapter MyAdapter=new SqlDataAdapter (str,sqlConnData);
     addressDS ds=new addressDS();
     MyAdapter.Fill (ds,"brigderoad");//绑定到数据源
     string FilePath=Server.MapPath("report/bridgeCrR.rpt"); //指定到特定的报表         
 
     if (!ReportDoc.IsLoaded )
        ReportDoc.Load(FilePath);
     ReportDoc.SetDataSource(ds);
Crv.ReportSource=ReportDoc;  
}
上面就是常见的代码,并且代码不存在错误,那读者要问了,上面没有错误,但是到预览报表时,要打印、导出、查找特定的页面时为什么还是空白页面呢?
哈哈,下面将解决这个问题,请往下看
if (!IsPostBack)
{
 //
}
SqlConnection sqlConnData=new SqlConnection(ConfigurationSettings.AppSettings["dsn"]) ;           
     sqlConnData.Open();
string str="select * from brigderoad where (station='"+UserStr+"') or (year='"+yearStr+"') ";
//查询特定的表
SqlDataAdapter MyAdapter=new SqlDataAdapter (str,sqlConnData);
addressDS ds=new addressDS();
MyAdapter.Fill (ds,"brigderoad");//绑定到数据源
string FilePath=Server.MapPath("report/bridgeCrR.rpt"); //指定到特定的报表         
 
if (!ReportDoc.IsLoaded )
      ReportDoc.Load(FilePath);
ReportDoc.SetDataSource(ds);
Crv.ReportSource=ReportDoc;
 
 
看到了吧,只需要if语句后的代码放在if (!IsPostBack){ //}
的后面就可以了,呵呵,啰唆了那么多,就这么简单。Ispostback指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问,当执行完if (!IsPostBack){ //}之后有比讯把所查询的表重新绑定数据源,这样报表中有了数据,所以水晶报表的工具栏就可以用了。
总结:
 if (!IsPostBack){ //}执行之后要把表重新绑定到数据源,这样才不会错误。 

Asp.net 水晶报表之打印和导出格式

在ASP.NET中水晶报表没有象在Windows Form中那样提供报表的导出和打印功能,需要我们自己动手添加代码来控制,下面给个DEMO:导出:myReport  ReportDoc = new m...
  • ayun00
  • ayun00
  • 2006年08月17日 13:27
  • 1085

水晶报表文件导出方法小结

近期在做水晶报表时,作者用到了水晶报表文件导出功能。在网上一搜,资料还真多,这些资料不仅多,而且非常的杂乱,让人看得非常不舒服。于是在此将其作了一点汇总和整理,以供大家参考。写的不好,请多包涵。 命...
  • SunCherryDream
  • SunCherryDream
  • 2015年04月29日 18:46
  • 3225

水晶报表导出到客户端

 水晶报表版本:for net 2003原理:通过在服务器上保存,然后通过Response.Redirect,在浏览器中打开,这样就会提示下载.CrystalDecisions.Shared.Disk...
  • bill1315
  • bill1315
  • 2007年11月23日 15:13
  • 633

把水晶报表导出到html文件

  • 2007年11月27日 11:10
  • 62KB
  • 下载

C#之二十三 打印和水晶报表

打印组件介绍   打印是常用的的功能,打印的原理从本质上和Windows窗体画图的原理是一样的,你在窗体里面画了一个圆,那么同样的代码,打印机也会在纸张的同一个位置打印了出一个圆,...
  • zhangchen124
  • zhangchen124
  • 2016年05月05日 21:20
  • 5079

『水晶报表』实现打印

在我们开发各种工具软件的时候,我们不可避免的会遇到打印的问题。而使用.NET开发打印功能,水晶报表或许会是一个十分不象错的选择! 一般步骤: 准备好想要打印的数据源;制作用于规定打印结果样...
  • 3150379
  • 3150379
  • 2015年03月14日 21:50
  • 733

水晶报表导出pdf功能(完整的代码C#版)

using System;using System.Collections;using System.ComponentModel;using System.Configuration;using S...
  • zjfei
  • zjfei
  • 2010年03月20日 17:15
  • 1703

水晶报表直接输出到页面,不保存PDF文件

private string ReportFileFolder = HttpContext.Current.Server.MapPath("~/") + @"Reports\";   public ...
  • wy978651775
  • wy978651775
  • 2014年12月22日 17:02
  • 1286

在水晶报表中使用Code128条形码

1.将code128条码字体拷贝到C:\Windows\fonts下 下载地址是 http://download.csdn.net/detail/easyboot/9452777 2 .在水晶报表里的...
  • easyboot
  • easyboot
  • 2016年03月05日 13:51
  • 4221

Vs13 开发水晶报表

开发工具我们选用目前主流的VS2013。需要安装开发包CRforVS_13_17.exe。这里我提供一个下载地址,方便大家下载安装。http://scn.sap.com/docs/DOC-7824首先...
  • yhd0916
  • yhd0916
  • 2016年07月29日 10:42
  • 1875
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:水晶报表10 打印、导出按钮不能用
举报原因:
原因补充:

(最多只允许输入30个字)