当隐藏某些列时,如何调整rdlc报告的总宽度?

时间:2010-03-08 22:03:49

标签: c# winforms reportviewer rdlc

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

所以我的问题是:有没有办法在运行时动态调整报告宽度,以避免报告中出现大的空白区域?我试图通过为报表正文的宽度指定一个参数来在设计器中执行此操作....但这是不允许的。宽度不能是设计器中的任何类型的表达式,只允许实际值。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

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

但请记住,如果您在设计器中打开rdlc报告,它会将宽度重置为视图区域,以便再次出现问题,所以在完成报告后再进行此操作。

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

希望这有帮助。

答案 1 :(得分:1)

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

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

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

希望这可以提供帮助。

答案 2 :(得分:0)

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

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

请记住,如果您重新调整容器的大小,报表中的空格问题将变为表单上的空格问题。报告周围仍然是一个紧凑的框架,框架外面的空白空间可能就是你想要的。

HTH&amp;欢呼声,

CEC