Rdlc SubReport问题,不能使用报表或子报表中objectdatasource的List(of Object)属性

时间:2010-08-11 05:08:01

标签: vb.net rdlc

我正在尝试使用对象数据源在VB.net 2008中创建RDLC报告。

问题是,我的对象数据源是Item个对象的列表。 每个Item对象都有一个名为Stock的属性 - 这是ItemStock个对象的列表。 这两个类的主要属性如下:

Item Class:
Name,Id, Stock,<and some other like MRP,Tax etc.>

ItemStock Class:
BranchId,BatchNo,Expirydate,StockQuantity

单个Item对象可以包含每个ItemStock的多个BranchId项。因此,Item.Stock属性将是此类股票项目的并集,即List( of ItemStock)

现在,我的名为Stock报告的报告将有一个List(of Item)对象作为数据源(绑定源)。我得到了所需的对象列表,没有任何错误。 我将列表分配给Datagrid以显示分支聚合库存值。 那就是:

Itemname         Branch1    Branch2   Branch2
item1               12         2         3

这很好用,因为我使用LINQ通过处理Cell_format事件

来获取每个分支中项目的股票价值总和

但是当我创建报告时会出现问题。我的报告需要采用格式:

Item1 Name
     Branch     BatchNo   Expiry      Quantity
     Branch1    12677     12/09/2009    56 
     Branch1    1217      04/04/2010    6 
     Branch2    22644     12/03/2011    16 
     Branch3    72600     12/02/2012    7 

Item2 Name
     Branch     BatchNo   Expiry       Quantity
     Branch1    2677     12/09/2009      5 
     Branch2    244      12/03/2011      1 
     Branch3    7200     12/02/2012      7 

现在我无法理解如何在Stock对象上使用属性Item来显示此报告。 我可以选择使用我创建的子报表。但我无法弄清楚在处理子报告时如何分配特定项目对象的股票属性。

我还尝试按以下方式处理SubreportProcessing事件:

  Private Sub SubreportProcessing(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
        e.DataSources.Add(New ReportDataSource("Chemasis_BusinessObjects_Objects_ItemStock", ctype(itemBindingSource.Current,Item).Stock))
    End Sub  

但显然,这会占用ItemBindingSource中的第一项,因此,所有股票值都会显示为相同。

0 个答案:

没有答案