今天用Stimulsoft Reports做报表的时候,遇到一个问题,需要一个报表中显示2个报表视图,我在百度和博客园中搜索了一下,发现这方面的资料很少,我自己最后把问题解决了之后,整理了一下给大家分享一下吧。
这种问题一般解决方法有2个:1、一张Stimulsoft Reports报表绑定2个数据源;2、一张报表绑定一个数据源,通过数据源的筛选来显示2个视图报表的数据。而第一种方法,现在的报表控件好像还都不支持一张报表绑定多个数据源(水晶报表和Stimulsoft Reports)都是,如果有大侠知道一张报表绑定多个数据源的方法,欢迎指教;那下面我们就详细说说第二种实现方法,通过数据筛选来实现一张报表显示多个视图报表。
首先,肯定还是要Stimulsoft Reports先绑定好你的数据源(dataset啊,视图啊,存储过程啊等等),而我此次绑定的数据源是查询好数据的dataset对象,这个dataset中有你需要显示2张报表视图的所有字段数据,通过Stimulsoft Reports的databand数据源的筛选属性,把一些字段为空(或者你通过三元运算符赋予的设定值)的数据排除(就是说这个dataset中有2个或多个报表数据,而2个报表的数据字段不一样,那第一个报表中的有些字段数据在第二个报表中就肯定没有),这样子,你就可以显示第一个报表时候排除掉第二个报表的数据,因为第一个报表中的有些关键字段,在第二个报表中显示的数据字段值是没有的,显示第一个报表数据时候排除掉没用第二个报表的数据不就是想要显示的报表视图嘛,同理,第二个报表也是啊,通过一些关键字段排除掉第一个报表数据中没值的那些数据,就得到了第二个报表的数据啦。好吧,也许到现在,有些童鞋还在云里雾里,那我就在下面上图详细给大家看一下。
我们先来看在一张报表中显示多个报表视图的效果:
如果这张报表你不通过筛选来显示这2个报表,那结果肯定是上下2个报表同时显示了2个报表所有的11条数据,而且数据看起比较脏乱,明显不是想要分开显示2个报表的结果。
在Stimulsoft Reports Designer中设计报表样式,托出headerband、databand、footerband以及画出对应的字段属性中绑定这些我就不在此多说了哈,不清楚的童鞋百度哈,一大堆,这些都基本的设计绑定好之后,我们就要进行2个报表的筛选了,双击databand1也就是合同那个报表,广告合同那个报表就是databand2啦。
大家看到了吧,双击databand1之后就会显示这个“设置”对话框,选择“过滤”,我设置了过滤掉“AdContractCode”(广告合同的编号)值等于1的这些数据,因为databand1绑定的是我们合同的报表啊,而不需要显示广告合同的报表啊,我们绑定的dataset对象中合同相关的数据是没有“AdContractCode”(广告合同的编号)的啊,有“AdContractCode”值的是广告合同相关的数据啊,所以,过滤掉“AdContractCode”的数据就是合同的数据;同理,筛选出来广告合同相关的数据。
为什么筛除掉值为“1”的代码:
dr["AdContractCode"] = charge.AdContractCode == null ? "1" : charge.AdContractCode; 值为null时候,我默认赋值为“1”。
好了,就说到这里吧,下班快一个小时了,赶紧回家了,大家有不清楚的再留言吧。