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

来源:互联网 发布:美工助理面试自我介绍 编辑:程序博客网 时间:2024/05/17 20: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){ //}执行之后要把表重新绑定到数据源,这样才不会错误。


转自:http://blog.csdn.net/matail/article/details/1789489