我正在尝试使用对象数据源在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
中的第一项,因此,所有股票值都会显示为相同。