RDLC报表的结构
要根据不同数据动态生成RDLC报表,我们需要先了解RDLC报表的结构。右键以记事本打开一个rdlc为后缀的文件,你就会我感到这世态炎凉是一个xml文件,里面包含不同的节点,简化后大致如下:
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">
<DataSources>
//数据源
</DataSources>
<DataSets>
//DataSet数据表
</DataSets>
<Body>
<ReportItems>
//数据展示
</ReportItems>
<Style />
<Height>1cm</Height>
</Body>
<Width>3cm</Width>
<Page>
<PageHeader>
//页眉
</PageHeader>
<PageFooter>
//页脚
</PageFooter>
<PageWidth>21.0cm</PageWidth>
<PageHeight>29.7cm</PageHeight>
<LeftMargin>0.0cm</LeftMargin>
<RightMargin>0.0cm</RightMargin>
<TopMargin>0.0cm</TopMargin>
<BottomMargin>0.0cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
<EmbeddedImages>
//图片
</EmbeddedImages>
<rd:ReportID>809f16cf-ea78-4469-bf43-965c4afe69d0</rd:ReportID>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
</Report>
我们从这个简化的RDLC报表结构中可以看到有DataSources数据源、DataSets数据表、Body主要数据显示、EmbeddedImages图片、页眉、页脚、页面属性,下面我们一个一个来分解这些节点。
1、DataSources数据源
在常规的报表设计中需要先定义一个xsd为后缀的DataSet数据源文件,里面有DataSets数据表,同一个项目中可以有许多不同名称数据源,RDLC需要指定使用那一个数据源,这里是动态RDLC就简单一点,就用固定一个就好了,代码如下:
<DataSources>
<DataSource Name="DummyDataSource">
<ConnectionProperties>
<DataProvider>SQL</DataProvider>
<ConnectString />
</ConnectionProperties>
<rd:DataSourceID>3eecdab9-6b4b-4836-ad62-95e4aee65ea8</rd:DataSourceID>
</DataSource>
</DataSources>
2、DataSets数据表
这里就是数据的名称和结构,也就是数据表的名称和所包含的数据列(名称、数据类型),可以有多个数据表,但名称不能有相同,否则就会出错。这里的数据列的数据类型全部用字符System.String就可以了,以下是具体代码:
<DataSets>
<DataSet Name="数据表名称">
<Field Name="字段名称">
<DataField>字段名称</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
......
<Query>
<DataSourceName>DummyDataSource</DataSourceName>
<CommandText />
</Query>
</DataSet>
......其它数据表......
</DataSets>
3、Body数据显示
<Body>
<ReportItems>
//数据展示
</ReportItems>
<Style />
<Height>1cm</Height>
</Body>