【问题标题】:How do I adjust overall width of rdlc report when some columns are hidden?隐藏某些列时如何调整 rdlc 报告的整体宽度?
【发布时间】:2011-01-25 04:43:11
【问题描述】:

我有一个可自定义的 rdlc 报告,用户可以在其中选择要显示的列。所有列都包含在报表设计器中,我使用参数根据用户的选择隐藏/显示列。报告正确呈现,并且仅显示选定的列,但是,报告的整体宽度与所有列都可见一样。这意味着报表可以在所选列的右侧有一个巨大的空白区域,这看起来很傻。

所以我的问题是:有没有办法在运行时动态调整报告宽度以避免报告中出现大的愚蠢空白区域?我试图在设计器中通过为报表主体的宽度分配一个参数来做到这一点......但这是不允许的。宽度在设计器中不能是任何形式的表达式,只允许实际值。

有什么建议吗?

【问题讨论】:

    标签: c# winforms reportviewer rdlc


    【解决方案1】:

    我有一个可能很愚蠢的解决方法,但至少它对我有用; 因此,在您完成 rdlc 报告设计器后,将其关闭,然后使用 xml 编辑器打开 rdlc 报告,然后在 <body>...</body> 标记之后的 <Report> 标记内,您可以看到一个 <width>...</width> 标记,其中包含报告的宽度,将其值修改为一个非常小的值(比如说<width>1in</width>),这应该使报告显示没有愚蠢的空格。

    但请记住,如果您在设计器中打开 rdlc 报表,它会将宽度重置为视图区域,因此问题会再次出现,因此请在您从报表中完成之后再做。

    我知道这是一个愚蠢的解决方案,但在开发人员方面比在客户方面更愚蠢^_^。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      如果可能,您可以增加另一列的宽度以填充空白空间。 我解决了这个问题如下。

      例如,我有“名称”和“折扣”列。折扣可以隐藏,我应该将 Name.Width 更改为 Name.Width+Discount.Width。

      我在“名称”列的右侧创建了一个新列(称为“NameExt”),其宽度与 Discount.Width 相同。 'Name' 列和 'NameExt' 列的合并单元格。然后为“折扣”设置可见性规则,为“NameExt”设置反向可见性规则。

      希望这能有所帮助。

      【讨论】:

        【解决方案3】:

        报表的实际宽度在设计器中是固定的,因此报表本身无法在运行时调整大小。您是正确的,在报表设计器中无法分配表达式或动态地为报表、页面或正文分配宽度值。

        但是,rdlc 报告的 CONTAINER 的宽度可以在运行时进行控制。如果您将报表查看器放在面板控件中,您应该能够获得所需的输出。由于您的 UI 允许用户决定要包含哪些列,您应该能够为每个可选列附加一个宽度值,并对这些列进行求和并根据需要调整容器的大小。

        请记住,如果您重新调整容器的大小,报表中的空白问题会变成表单上的空白问题。报表周围仍然是一个紧凑的框架,而该框架之外的空白区域可能正是您想要的。

        HTH 和干杯,

        CEC

        【讨论】:

        • 您可以通过将 rdlc 加载到 XmlDocument 对象并调整“大小”元素来调整列的宽度。我一直这样做是为了在运行时隐藏列。
        猜你喜欢
        • 1970-01-01
        • 2018-11-14
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多