在今天的文章中,我们将讨论如何避免报告中出现空行。我们不仅会介绍在没有数据时禁用组件;还会介绍在没有数据时禁用组件。我们还将探索消除禁用组件时可能出现的空行。但在我们深入探讨之前,让我们检查一下数据带的零数据样本。
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了所有内容!
Stimulsoft Reports.Ultimate不仅拥有强大的报表导出系统,而且还支持多种报表导出格式,拥有简单且强大的报表引擎。Stimulsoft Reports.Ultimate基本原则是,用简单常规的方法创建报表,将不同的技术应用于应用程序。
Stimulsoft Reports官方正版下载(qun: 740060302)https://www.evget.com/product/2398/download
空数据
考虑一份包含产品列表的报告(参见屏幕截图 1)。要排除数量为 0 的产品,您可以轻松地将过滤应用于数据带。例如,添加一个带有表达式 Products.Count != 0 的过滤器(请参阅屏幕截图 2)。
上面的屏幕截图显示,报告排除了产品数量为 0 的行,不留任何间隙。这可以归因于报告构建过程中数据带的扩展,其中每个数据行都是按顺序处理的。在生成报告时,报告工具会评估条件 - 是否打印数据行。如果不需要打印,它会立即移至下一行数据。因此,尽管源中存在附加行,当前示例仍按顺序打印这些行,没有任何跳过。
空白空间的问题
然而,上面讨论的示例说明了报表中区域的呈现。当不仅需要禁用整个带,而且还需要禁用其中缺少数据的特定组件时,就会出现空行和空间的问题。在给定的示例中,在发票标题区域上,如果未选择日期,我们将禁用发票日期组件。
正如您所观察到的,禁用的组件已从报告中排除,从而保留其可视占位符,而不会替换其他组件。但是,请考虑避免视觉间隙的挑战,例如确保客户标识符组件立即出现在发票编号组件之后。我们正在解决动态行为 - 组件可能出现或不出现在报告中的场景。显然,如果组件从未出现,更简单的解决方案是通过删除模板并按所需顺序排列剩余组件来编辑模板。
禁用组件
在我们讨论对接之前,让我们探索一下禁用组件的各种方法。每个组件都带有一个Enabled属性,可以将其设置为True,表示该组件始终启用,或者设置为False,表示该组件始终禁用。此外,您可以定义一个表达式,其计算结果产生布尔值。因此,通过利用表达式,您可以动态确定生成的报告中组件的可用性。最后,您应该知道可以通过条件格式动态启用或禁用组件。
对接组件
一般来说,组合组件非常简单。要实现此目的,您只需将Dock Style属性设置为适当的值即可。在上面的示例中,对于发票编号、日期和客户 ID 等组件,我们将对接值设置为Top。或者,您可以从Left、Right、Bottom和Fill值中进行选择。
此后,如果没有包含发票日期的组件,则标识符组件将紧跟在包含发票编号的组件之后。然而,事情并非那么简单。启用Dock Style属性会触发以下操作:
- 组件的宽度被拉伸到容器或相邻组件的边界。在此示例中,可以在单独的面板上找到包含发票编号、日期和客户 ID 及其标签的组件。该面板又位于报告标题区域;
- 组件停靠到选定的容器边框,在本例中是从顶部;
- 同时,报告工具会检查:如果任何启用了“停靠样式”属性的组件已停靠到容器边框,则下一个组件将立即位于其后面。
注意:在本例中,如果我们只为具有客户端 ID 的组件启用Dock Style属性,而没有为其他组件启用 Dock Style 属性,则虽然可以构建报表,但无法实现所需的效果。
以下是报告。在其中选择一个日期。
使用子带
子带是一个特殊的带,充当其所在带的延续。下级频段无法独立运行,因此缺乏自己的数据源。报告中的从属频段数量没有限制。虽然子带中的组件可能存在数据,但从属带中的组件可能不存在数据。在这种情况下,从属带区仍保留在报表中,从而在视觉上创建空白空间。要消除此空白区域,您可以通过指定Enabled属性的表达式或使用条件格式来禁用带区,以静态或动态方式禁用带区。