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

最近公司接了一个项目,要给客户做许多报表,并且是中国式的报表,本人就用了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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值