最近公司需要打印,所以今日一直在研究ReportView控件的使用。刚开始简单的使用还是可以的,但是最近遇到这样的需求:要显示主表信息和子表信息,而且还是多条,刚开始还在一直考虑使用子报表实现,但是刚开始接触,还是未能实现。后来突然想到表是列数不变,行数改变的,所以就想起来把要显示的数据放到表里,这样就可以在分组的情况下实现多个分类数据的显示。刚刚了解该控件望各位大虾指点,
一.Rdlc文件的设计
基本的就不用介绍啦,添加了报表文件以后,在“报表数据”对话框中选择数据集,该数据集应该是用来配置报表文件所用,选中了数据集以后会将该数据集的字段信息配置到报表的xml配置文件中,所以一定要注意为指向该报表文件的ReportViewer控件。
<DataSource Name="SE">
<ConnectionProperties>
<DataProvider>System.Data.DataSet</DataProvider>
<ConnectString>/* Local Connection */</ConnectString>
</ConnectionProperties>
<rd:DataSourceID>9a9c2070-7af9-4188-a95c-74b055bdd9f6</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="DataSet1">
<Fields>
<Field Name="OrderId">
<DataField>OrderId</DataField>
<rd:TypeName>System.Int64</rd:TypeName>
</Field>
<Field Name="ShopOrderId">
<DataField>ShopOrderId</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ShopName">
<DataField>ShopName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OutData">
<DataField>OutData</DataField>
<rd:TypeName>System.DateTime</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>SE</DataSourceName>
<CommandText>/* Local Query */</CommandText>
</Query>
<rd:DataSetInfo>
</rd:DataSetInfo>
</DataSet>
</DataSets>
下面就是Body的配置信息啦。
二.实现循环显示某些信息的实现
就如我遇到的问题一样,需要显示多个主表和子表信息,并且按照主表的ID分页,这样的需求如何实现呢。我能想到的有两种方式:
1)用表的“分组”实现。选中显示信息的任何单元格,选择添加父组,就会出现分组设置对话框,如下图:
选择分组的依据,就相当于sql语句中的Group By。这样的设置还可以对每组的数据进行合计。
2)将表嵌套到表中,因为表是列是不变,行数改变的,这样就可以使显示不同主表的信息。但是还需要设置分组,以主表的ID分组。如果想每页显示一组数据的话就设置“组属性”的分页符,这样数据就会以组来分页显示啦。
好吧,我就介绍这些吧,小码农都是靠思路完成任务的,给出我的思路后相信会对有需要的帮助难兄难弟们。
---海风提供