导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

TextBox中的汉字为何无法在水晶报表中打印?

zahuifan 2006-02-11 11:32:07
我用VS2003和水晶报表10,现在遇到了两个奇怪的问题:
1. 我把页面上的TextBox中的汉字通过水晶报表的参数传入水晶报表中,然后用CrystalReportViewer控件把此报表的内容显示出来,可以看到所传递的汉字已经正确显示在了报表上,说明传值操作成功了。可是奇怪的是按CrystalReportViewer上的打印按钮,在水晶报表生成的PDF中却没有显示我传进去的汉字。如果我不是把TextBox中的汉字赋给水晶报表而是直接把一个含有汉字的字符串赋给水晶报表就能够正确打印。

2. 我有一个页面设计成可以让用户在一个TextBox中输入部门名称(汉字)进行筛选。程序会按TextBox中的部门名称去Oracle数据库中查询数据,然后填充DataSet, 再把填充后的DataSet赋给水晶报表,结果同样是在CrystalReportViewer预览有数据,而当按CrystalReportViewer上的打印按钮,在水晶报表生成的PDF中却只显示一张空白的表。奇怪的是如果把TextBox换成DropDownList控件而其它代码都不变就没问题。

请问哪位同仁也遇到过此问题,怎样解决呀? 问题的原因到底是什么?
...全文
113 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlehp2004 2006-02-13
我有个更奇怪的问题,哈哈哈,为何不能直接打印文本框中的内容呢?
如果是那样的话,作关于水晶报表的很多事都方便多了
回复
zahuifan 2006-02-13
morality(业精于勤,行成于思!) 给我提供了一个不错的Blog,200分就给你吧。
回复
zahuifan 2006-02-13
还有一种解决方法是把CrystalReportViewer的PrintMode属性设为ActiveX,这样也没问题。
回复
zahuifan 2006-02-13
问题我自己解决了,是因为当用户按打印机按钮时,系统会调用Page_Load()函数两次,不知为什么在第二次调用Page_Load()函数时,所有汉字都会莫名其妙地消失了。

解决方法是:
1. 不要把向水晶报表的参数赋值的语句放在Page_Load()函数里。
2. 在Button_Click()事件里筛选数据,并把数据存放在Session里,在Page_Load()函数里只是把报表与Session中的数据绑定。

这样就绕过了水晶报表的 Bug。
回复
luoyi107 2006-02-12
学习....
回复
流梓 2006-02-11
没遇到这样的问题。
一、成生PDF有问题,检查字符编码。
二、检查你的DataSet 是否有数据。
回复
morality 2006-02-11
http://blog.csdn.net/haibodotnet/category/13322.aspx
回复
zahuifan 2006-02-11
没人遇到过么?
大家都是用哪个版本的水晶报表?
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.