假设我有 10 列要查看报告,我想根据用户选择的参数值在运行时隐藏其中的 3 列。这可以通过根据上述参数的值设置这 3 列中的每一列的列可见性来轻松完成。到这里为止都很好。
问题是当报告显示(隐藏 3 列)时,其余 7 列占据了隐藏列的位置,因此表格的整体宽度相应减小。我不希望这种情况发生。即我希望表格宽度保持不变。
也就是说剩余的列宽度应该能够以某种方式扩展,以便表格的原始整体宽度保持不变。
这有可能实现吗?
假设我有 10 列要查看报告,我想根据用户选择的参数值在运行时隐藏其中的 3 列。这可以通过根据上述参数的值设置这 3 列中的每一列的列可见性来轻松完成。到这里为止都很好。
问题是当报告显示(隐藏 3 列)时,其余 7 列占据了隐藏列的位置,因此表格的整体宽度相应减小。我不希望这种情况发生。即我希望表格宽度保持不变。
也就是说剩余的列宽度应该能够以某种方式扩展,以便表格的原始整体宽度保持不变。
这有可能实现吗?
列宽本身不是基于表达式的,但您可以实现类似的效果。我认为它是否适合您将取决于您的特定报告布局以及解决方法如何影响任何其他元素。
无论如何,一个简单的例子。我已经针对具有三个字段的 DataSet 创建了一个报告:
我已将val2
其可见性设置为由布尔参数控制HideColumn
。这工作正常。
请注意,表中实际上有五列。For val1
andval3
实际上有两列,我已经将列中的字段合并在一起。
这里的关键是,当HideColumn
设置为trueval1
时,我们显示and的额外列val3
,而当它为false时,我们隐藏列 - 基本上与 的可见性相反val2
。
SSRS 将根据可见的列相应地调整合并字段的宽度:
所以在这种情况下,它按要求工作。对于您的示例,您需要考虑这些额外列的大小和所需的宽度,但原理是相同的。
这仅适用于设置列,即不是矩阵,但希望对您来说就足够了。
我找不到 Reports 原生支持的解决方案,也没有找到令人满意的在线解决方案。所以我写了一些代码来操作XML,然后在reportview中使用它。它重新分配隐藏列的宽度:
https://github.com/DaveyvanTilburg/RDLCDynamicColumns
正在更改的 xml 示例片段(可以在 github 中找到完整示例)
之前:
<TablixColumn>
<Width>4.20cm</Width>
</TablixColumn>
<TablixColumn>
<Width>12.4567cm</Width>
</TablixColumn>
<TablixColumn>
<Width>10.50cm</Width>
</TablixColumn>
之后,第二列将被隐藏,其宽度重新分布在可见列上:
<TablixColumn>
<Width>10.428350cm</Width>
</TablixColumn>
<TablixColumn>
<Width>0cm</Width>
</TablixColumn>
<TablixColumn>
<Width>16.728350cm</Width>
</TablixColumn>