首页 文章

创建具有可变列数的rdlc报告

提问于
浏览
1

我在创建.rdlc报告时遇到问题 . 本报告的重点是显示 Bus 车路线上的乘客数量(它具有该路线上每个车站的乘客数量) . DataSet充满了一个存储过程(我无法更改) . 每条路线的数据由2部分组成 - 第一部分具有特定路线上的车站名称(有列表示乘客数量,但是它们的值为空),第二部分包含乘客数量为每个站 . 这两个部分都是相同存储过程的结果,它们显示在同一个表中 . 我遇到的问题是每条路线都有不同数量的电台 . 所以我的问题是 - 如何制作一个适应特定路线上车站数量的报告(或子报告)(列数应与路线上的车站数相同) . 值得一提的是,应在同一报告上显示具有不同站数的路线 . 我正在使用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(与前一部分不同)和乘客列中的值(同样,其他列将为null) . 所以我需要一个子报表,其列数与第一部分的行数相同 . 我知道这很复杂,但整个问题非常复杂 .

1 回答

  • 1

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

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

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

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

    Alternative

    如果你有很多站点,我个人会建议寻找其他报告生成器,如Crystal Reports(注意我自己没有经验,虽然它在搜索RDLC解决方案时经常穿过我的路径) .

    Format your data

    阅读完编辑后,听起来您的数据集结构不太实用 . 我建议填写一个更符合你想要显示的自定义对象,并在你的RDLC中使用它 .

    以下问题涉及:Use custom objects as the source for Microsoft Reports (.rdlc)

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

相关问题