我有一份RDLC报告,其中显示了一个行表,每个行表示一名员工为特定客户提供的时间表条目,例如:
Date Client Employee |Work Type |Hours Rate Total Total Invoiced Profit 2012-01-20|Client A|Employee 1|Project A |3.00|30.00|90.00|120.00 |30.00 2012-02-20|Client A|Employee 2|Project B |2.00|40.00|80.00|100.00 |20.00 .................................................................... Totals Client A 5.00|70.00|170.00|220.00 |50.00 Company annual Fee 2012 150.00 Total PL 200.00
上表的数据来自两个不同的表,即为每个客户输入的时间表条目表,以及保存客户发票金额的InvoiceEntries表。通过运行查询来填充数据的DataTable,连接两个表,并返回一个表,如:
Date|Employee|Client|Hours Worked|Rate|Total|Invoiced Amount|Annual Fees
现在,因为同一客户端的所有行的年度费用相同,并且因为我想按客户端对数据行进行分组并且报告底部有总计,所以我在后面的代码中以编程方式创建了一个新的DataTable,我使用来自数据表的数据来填充我从数据库查询获得的数据,通过它的行运行循环,但我操纵AnnualFees字段只有在我更改公司时才有值,否则我将其设置为零。因此,我确保每个客户的年度费用字段仅填充一次,这样当我计算报告表底部的总计字段时,我得到正确的值。
这种情况运作良好,但现在用户要求在报告运行时,如果有2013年的年费(以便报告期限为两年或更长),则希望将它们列出在每个客户的时间表条目总数之后单独进行。
显然,我不能再在数据表中使用额外字段,因为年费存在的年数是未知的。
有没有人知道我可以实现这个?
由于
答案 0 :(得分:0)
我解决了这个问题;为了将来的参考,这是我做的: 我在我的数据表中添加了一个名为RowType的新字段。 在代码隐藏中,我进行两次数据库调用,一次检索时间表条目,另一次检索每家公司的年费。使用它们,我构建用于绑定报表的数据表。包含Timesheet条目的行的RowType字段等于“Project Fees”,而包含年费的行将其设置为“年费”。
然后,我根据新字段在报表上创建了一个额外的RowGroup,并相应地设置其可见性和排序参数,以便在RowType有一个值或另一个值时显示/不显示。
这似乎有效。