【问题标题】:Creating a rdlc report with variable number of columns创建具有可变列数的 rdlc 报告
【发布时间】:2013-01-22 09:44:11
【问题描述】:

我在创建 .rdlc 报告时遇到问题。该报告的重点是显示巴士路线上的乘客数量(它包含该路线上每个车站的乘客数量)。 DataSet 填充了一个存储过程(我无法更改)。每条路线的数据由两部分组成-第一部分包含特定路线上的车站名称(有表示乘客数量的列,但它们的值为空),第二部分包含乘客数量对于每个站。这两个部分都是同一个存储过程的结果,它们显示在同一个表中。 我遇到的问题是每条路线都有不同数量的车站。 所以我的问题是 - 我如何制作一个报告(或子报告),以适应特定路线上的车站数量(列数应该与路线上的车站数量相同)。值得一提的是,不同站点数量的路线应显示在同一份报告中。 我正在使用 VS 2010 和 C# 创建生成此报告的应用程序。 你能帮我解决这个问题吗? 谢谢

示例 不幸的是,我不允许诋毁特定数据,但我会尽力为您提供必要的信息。 存储过程的结果具有以下结构: Route_ID | Departure | DataType | StationName | Passengers1....Passengers61 该报告按 Route_ID 分组。 DataType 值定义该行是否包含车站名称(结果的第一部分)或乘客人数(第二部分)。例如,如果一条路线有 3 个车站和一个出发地,则该组将有 4 行 - 前 3 行将包含 Route_ID、DataType 和 StationName(每行有不同的 StationName,前 2 个参数将相同),其他列将有空值。第二部分由 Route_ID、DataType(与前一部分不同)和乘客列中的值组成(同样,其他列将为空)。所以我需要一个子报表,它的列数与第一部分的行数相同。我知道这很复杂,但整个问题非常复杂。

【问题讨论】:

  • 如果我是正确的,您正在寻找类似的东西: BUS1:stationA 5 人; B站6人| BUS2:A站2人; B站3人; stationC 12人,哪里站数不定?
  • 听起来您应该在使用数据之前对其进行格式化,我已经编辑了我的答案并提供了一些可能对您有所帮助的链接。

标签: c# reporting rdlc


【解决方案1】:

可能不是你想听到的答案,但在 RDLC 中动态创建列相当困难(至少我无法让它工作)。

如果可能的话,我会建议这个(有点不干净)解决方案: 尽可能多地创建您的表:

BUS | StationA | StationB | StationC | StationD | ..
X9Z | 4 people | 5 people | 0 people | 9 people | ..

然后将可见性表达式添加到每个站列,即iif(StationB > -1, true, false)。 只有在设置值时才会显示列。当然,这意味着您必须提前定义所有站点(并维护它们)。因此,如果您有 50 个站点,那后面会很痛苦。

替代方案

如果您有很多电台,我个人建议您寻找其他报告生成器,例如 Crystal Reports(请注意,我自己没有这方面的经验,尽管在搜索 RDLC 解决方案时它经常与我擦肩而过)。

格式化您的数据

阅读您的编辑后,听起来您的数据集结构不是很实用。我建议填充一个更符合您想要显示的内容的自定义对象,并在您的 RDLC 中使用它。

以下问题指的是:Use custom objects as the source for Microsoft Reports (.rdlc)

这个链接基本上就是答案:http://www.gotreportviewer.com/objectdatasources/index.html

【讨论】:

  • 我正在考虑相同的解决方案(最大站数为 61),但这是问题所在 - 如何计算特定路线上的站数?我按照路线对车站进行了分组(每条路线都有一个唯一的编号),那么如何计算一个组中的车站数量?
  • 我不太确定您是如何对数据进行分组的,您能否在问题中添加一个数据示例?
猜你喜欢
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多