我用VS2003和水晶报表10,现在遇到了两个奇怪的问题:
1. 我把页面上的TextBox中的汉字通过水晶报表的参数传入水晶报表中,然后用CrystalReportViewer控件把此报表的内容显示出来,可以看到所传递的汉字已经正确显示在了报表上,说明传值操作成功了。可是奇怪的是按CrystalReportViewer上的打印按钮,在水晶报表生成的PDF中却没有显示我传进去的汉字。如果我不是把TextBox中的汉字赋给水晶报表而是直接把一个含有汉字的字符串赋给水晶报表就能够正确打印。2. 我有一个页面设计成可以让用户在一个TextBox中输入部门名称(汉字)进行筛选。程序会按TextBox中的部门名称去Oracle数据库中查询数据,然后填充DataSet, 再把填充后的DataSet赋给水晶报表,结果同样是在CrystalReportViewer预览有数据,而当按CrystalReportViewer上的打印按钮,在水晶报表生成的PDF中却只显示一张空白的表。奇怪的是如果把TextBox换成DropDownList控件而其它代码都不变就没问题。请问哪位同仁也遇到过此问题,怎样解决呀? 问题的原因到底是什么?

解决方案 »

  1.   

    没遇到这样的问题。
    一、成生PDF有问题,检查字符编码。
    二、检查你的DataSet 是否有数据。
      

  2.   

    http://blog.csdn.net/haibodotnet/category/13322.aspx
      

  3.   

    问题我自己解决了,是因为当用户按打印机按钮时,系统会调用Page_Load()函数两次,不知为什么在第二次调用Page_Load()函数时,所有汉字都会莫名其妙地消失了。解决方法是:
    1. 不要把向水晶报表的参数赋值的语句放在Page_Load()函数里。
    2. 在Button_Click()事件里筛选数据,并把数据存放在Session里,在Page_Load()函数里只是把报表与Session中的数据绑定。这样就绕过了水晶报表的 Bug。
      

  4.   

    还有一种解决方法是把CrystalReportViewer的PrintMode属性设为ActiveX,这样也没问题。
      

  5.   

    morality(业精于勤,行成于思!) 给我提供了一个不错的Blog,200分就给你吧。