1 修改rdl变为rdlc报表文件
直接用reportviewer control做rdlc报表 在数据源这一块感觉处理的很混乱 而简单起见可以利用vs2005的business intelligence project 做一个服务器报表(rdl报表) 具体步骤不再赘述 可参看sqlserver帮助文档
用文本编辑器 参看以下文本
< DataSet Name ="Order" >
< Query >
< CommandText > SELECT [Order].* FROM [Order] </ CommandText >
< DataSourceName > DataSource1 </ DataSourceName >
</ Query >
< Fields >
< Field Name ="OrderID" >
< rd:TypeName > System.Int32 </ rd:TypeName >
< DataField > OrderID </ DataField >
</ Field >
< Field Name ="OrderNumber" >
< rd:TypeName > System.String </ rd:TypeName >
< DataField > OrderNumber </ DataField >
</ Field >
</ Fields >
</ DataSet >
< DataSet Name ="Address" >
< Query >
< CommandText > SELECT Address.* FROM Address </ CommandText >
< DataSourceName > DataSource1 </ DataSourceName >
</ Query >
< Fields >
< Field Name ="AddressID" >
< rd:TypeName > System.Int32 </ rd:TypeName >
< DataField > AddressID </ DataField >
</ Field >
</ Fields >
</ DataSet >
</ DataSets >
Field 节点可以自己往里面添加 但必须和你的自定义数据源的item结构信息相同
比如你addressinfo里有一个AddressID属性 那么对应于
<Field Name="AddressID">
<rd:TypeName>System.Int32</rd:TypeName>
<DataField>AddressID</DataField>
</Field> 可根据逻辑加一些只读属性结合使用
报表中使用 以textbox为例子 可用表达式 =First(Fields!AddressID.Value, "Address") 来取得
最后改后缀名为rdlc
2.建立自定义数据源
根据业务需要 可分层也可以不分层 本例用System.Collections.Generic下的List(of OrderInfo)来存储
Order信息
OrderController.Instance.GetOrderList(...) as List(of OrderInfo)得到制定的Order信息
3 绑定自定义数据到reportviewer control 主要代码如下
Dim addresslist As List( Of AddressInfo) = AddressController.Instance.GetAddresslist(...)
ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local
ReportViewer1.LocalReport.DataSources.Add( New ReportDataSource( " Order " , orderlist))
ReportViewer1.LocalReport.DataSources.Add( New ReportDataSource( " Address " , addresslist))
ReportViewer1.LocalReport.DataSources.Add( New ReportDataSource( " OrderAccessories " , orderaccessorieslist))
ReportViewer1.LocalReport.DataSources.Add( New ReportDataSource( " OrderPlanPhone " , orderplanphonelist))
ReportViewer1.LocalReport.ReportPath = " Report1.rdlc "
需要注意的是ReportDataSource的名字和你做rdl报表添加的数据源一致
4 总结
使用rdl简化报表设计 修改rdl中fields可灵活增加字段(相应的rdlc显示字段也做相应修改) 与业务逻辑层相匹配
进一步分离界面与数据.