reportviewer中的localreport使用自定义数据源

1 修改rdl变为rdlc报表文件

直接用reportviewer control做rdlc报表 在数据源这一块感觉处理的很混乱 而简单起见可以利用vs2005的business intelligence project 做一个服务器报表(rdl报表) 具体步骤不再赘述 可参看sqlserver帮助文档

用文本编辑器 参看以下文本

< DataSets >
    
< 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  orderlist  As   List( Of  OrderInfo)  =  OrderController.Instance.GetOrderIist(...)
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显示字段也做相应修改) 与业务逻辑层相匹配

进一步分离界面与数据.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值