1. 概述
1.1 版本
报表服务器版本 |
---|
11.0 |
1.2 应用场景
父子格是跟单元格扩展息息相关的概念,单元格的扩展是针对具体的某一个单元格,当报表主体中绑定了多个单元格时,这些单元格在扩展时是否存在联系,其扩展方向是否会相互影响呢?
以「地区」和「销售员」这两个字段为例,这两个字段之间存在层级关系,每个地区下面会有多个不同的销售员。我们希望这两个字段在单元格扩展时,能够表现出他们之间的层级关系,也就是让这两个字段的数据能够分组展示。FineReport 使用父子格设置来实现这种效果。
图示中「地区」字段为父格,「销售员」字段为子格。设置方法在下面的示例中详细说明。
1.3 功能介绍
FineReport 设计报表时,选中单元格后,单元格的父格会有「蓝色箭头」。如下图所示:
FineReport 支持两种类型的父子格设置。
左父格:单元格之间存在纵向扩展的关系时,设置左父格。
上父格:单元格之间存在横向扩展的关系时,设置上父格。
2. 示例
在设计器中设置子格的左父格或上父格时,下拉框有三种设置项:「无」,「默认」,「自定义」。
下面以单元格纵向扩展时设置左父格为例,详细介绍父子格设置时三种设置项各自的应用场景和效果。
2.1 无
「无」就是不设置单元格的父格,该单元格扩展时不考虑单元格之间的分组关系。
选中 B2 单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格设置为「无」。
报表效果如下图所示:
2.2 默认
当单元格左侧或上方相邻的单元格具有扩展属性时,单元格默认其左侧相邻纵向扩展的单元格为其左父格,默认上方相邻横向扩展的单元格为其上父格。
「默认」就是指将数据列拖拽至单元格中时,该单元格会默认将其相邻上方横向扩展的单元格或者左侧纵向扩展的单元格当做上父格或者左父格。
注:必须是相邻的同行或者同列单元格,不是相邻的需要自定义设置。
注:其单元格的左侧或上侧相邻单元格不具有扩展属性时,会依次向左或向上寻找具有扩展属性的单元格,来确定它的父格。
选中 B2 单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格设置为默认。由于 B2 左侧单元格 A2 是纵向扩展的,因而 B2 单元格默认的左父格为A2。
报表效果如下图所示:
2.3 自定义
单元格之间存在扩展关系,但是它们不相邻无法使用默认设置时,通过「自定义」来设置它们之间的父子格关系。
A2 单元格和 B3 单元格不相邻,但是它们之间仍然存在纵向扩展的层级关系。选中 B3 单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格自定义为 A2 单元格。
报表效果如下图所示:
3. 最父格
这里给大家再补充一个「最父格」的概念,以后其他文档可能会涉及到。
最父格严格来说要分为「最左父格」和「最上父格」,前者是纵向扩展的概念,后者是横向扩展的概念。
这个“最”指的不是位置上的“最”,不是说最左边的或最上边的格子就是最父格,而是指父子格关系上面的最左或最上。
例如:有张纵向扩展的明细表,其中 A2 的左父格为 B2 ,C2 的左父格为 A2 ,此时 B2 就是一个最父格,且是最左父格。
表格预览效果如下:
如果一个单元格是最父格,那么它必满足以下特点:
存在跟随其扩展的子单元格,也就是有单元格以它为父格。
最父格自身是没有父格的,所以其扩展不受其他单元格影响。