CrystalReportViewer能同时预览两种格式不同的CrystalReportDocument吗?

jane_zhao 2010-10-25 10:52:10
vs2008,PUSH模式,实现根据数据源的类型,预览报表分成多种格式。
原来设计是这样的:输入一个ID号,输入一个类型TypeNo,
查询出该ID号下该TypeNo对应的明细信息并显示打印预览(注:TypeNo不一样,对应的水晶报表布局和数据显示内容不一样,数据源结构也不一样),当时可以实现按照输入的TypeNo指定显示该TypeNO对应的报表。
但是现在要求实现只用输入一个ID号,查询出该ID号下所有TypeNo的明细信息并显示打印预览,此时可能TypeNo有多种,CrystalReportViewer的reportSource可能是多种报表格式,
这样的需求好实现吗?如何实现?各位高手帮忙解答下,在线等,谢谢!
...全文
254 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jane_zhao 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 babyt 的回复:]

解决了么 ? :)
[/Quote]
呵呵,用第一种方案解决了!非常感谢!
阿泰 2010-10-28
  • 打赏
  • 举报
回复
解决了么 ? :)
jane_zhao 2010-10-26
  • 打赏
  • 举报
回复
非常感谢阿泰,我现在用第一种方案试试看。
阿泰 2010-10-25
  • 打赏
  • 举报
回复
有难度。
如果不要预览还好,可以直接在后台取了打印。
但是要预览就麻烦了。

是BS程序还是CS程序?
jane_zhao 2010-10-25
  • 打赏
  • 举报
回复
大家都在忙吗?快来发表自己的看法吧,谢谢!
阿泰 2010-10-25
  • 打赏
  • 举报
回复
方法二:代码层面

首先看一下这篇,【分享】自定义水晶报表工具栏导出按钮事件WinForm & WebForm版

要做的不仅仅是替换掉导出事件,而是全部的事件

包括导出,翻页,打印等等,可以使用上篇中的控件替换法,或者直接自己做一个工具栏(推荐)。

你的模板保持不变,数据方式传递方式也基本不变。

从显示开始说,第一次显示肯定是显示第一份报表,Load进来就行,难点就是翻页。
翻页时,要跟踪当前的Typeno和页码,如果页码等于当前报表的最后一页了,就翻到下一个TypeNo
Load一个新的报表布局进来。
注意工具栏上的页码数字要发生变化。

这种情况报表上应该加个参数,过程中也要进行处理,就是用来控制总的页码连贯上
也就是 第X页/共Y页。

X和Y都是传递进去的。

打印的时候,逐个Load进来逐个打印就可以了。页码的连续性会让用户感觉是一个文档

导出的时候稍微麻烦些,就是导出后要合并。
一般情况打出成PDF的话,可以用Itext控件组合成一个文件。


我推荐使用第一种模板方案试试,当然,两种方法都也只是仅供参考。~
阿泰 2010-10-25
  • 打赏
  • 举报
回复
首先一个viewer同时只能放一个报表,也就是所说的一个CrystalReportDocument。

方法一从报表层面着手,那么也就是说要把这些报表捏成一个报表。
因为不同的TypeNo不一样,对应的水晶报表布局和数据显示内容不一样,数据源结构也不一样,所以对于TypeNo不能用组,但是可以用子报表。

我们假设TypeNo所对应的数据源种类和布局是有限的,比如说,有5种,起5个子报表。

每个对应不同的数据源,比如是一个不同的xsd,子报表有不同的布局。

此时,在主报表上基础数据这样显示

ID TypeNo1
ID TypeNo2
ID TypeNo3
ID TypeNo4
ID TypeNo5
ID TypeNo6

详细资料节上拆除几个节,分别放置不同的节,主报表和子报表设置关联关系,如ID和TypeNo两个字段关联

程序中,分别把不同的数据传给对应的数据源1,数据源2,数据源3,数据源4,数据源5。即把不同布局的数据分类传到不同的子报表上

子报表的各节中,设置如果没有数据就抑制显示
主报表中,设置子报表为空则抑制显示

这样就保证一个typeno只跟着一个子报表,且是有对应数据的和布局的那个子报表



阿泰 2010-10-25
  • 打赏
  • 举报
回复
想了好一会,想到点可能解决这个问题的方法,但是没有实践,所以仅供参考。
jane_zhao 2010-10-25
  • 打赏
  • 举报
回复
阿泰,还有没有其他替代的处理方法?
jane_zhao 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 babyt 的回复:]

有难度。
如果不要预览还好,可以直接在后台取了打印。
但是要预览就麻烦了。

是BS程序还是CS程序?
[/Quote]
是CS程序。是要实现预览的。

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧