3.2.4 父子格

Trouvaille / 2023-09-02 / 原文

一、父子格

  • 掌握父子格的概念; 学会制作分组报表和自由报表

1. 应用场景

  • 父子格是跟单元格扩展息息相关的概念,单元格的扩展是针对具体的某一个单元格,当报表主体中绑定了多个单元格时,这些单元格在扩展时是存在联系的。

  • 以「地区」和「销售员」这两个字段为例,这两个字段之间存在层级关系,每个地区下面会有多个不同的销售员。 我们希望这两个字段在单元格扩展时,能够表现出他们之间的层级关系,也就是让这两个字段的数据能够分组展示。因此,采用父子格的方式来实现。

  • 下图为对应的效果。图标中「地区」字段为父格,「销售员」字段为子格。
    image

2. 功能介绍

  • 选中单元格后,单元格的父格会有「蓝色箭头」
    image

FineReport 支持两种类型的父子格设置。

  • 左父格:单元格之间存在纵向扩展的关系时,设置左父格。

  • 上父格:单元格之间存在横向扩展的关系时,设置上父格。

image

3. 示例

在设计器中设置子格的左父格或上父格时,下拉框有三种设置项:「无」,「默认」,「自定义」。

下面以单元格纵向扩展时设置左父格为例,详细实现三种方式的效果。

image

3.1 【无】

  • 「无」就是不设置单元格的父格,该单元格扩展时不考虑单元格之间的分组关系。

  • 选中B2单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格设置为「无」。
    image

  • 实现效果:
    image

3.2 默认

  • 当单元格左侧或上方相邻的单元格具有扩展属性时,单元格默认其左侧相邻单元格为其左父格,默认上方相邻的单元格为其上父格。

注1:必须是相邻的同行或者同列单元格,不是相邻的需要自定义设置。

注2:其单元格的左侧相邻单元格不具有扩展属性时,会依次向左或向上寻找具有扩展属性的单元格,来确定它的父格。

  • 实现:选中B2单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格设置为默认。 由于 B2 左侧单元格 A2 是纵向扩展的,因而 B2 单元格默认的左父格为A2。

image

  • 实现效果

image

3.3 自定义

  • 单元格之间存在扩展关系,但是它们不相邻无法使用默认设置时,通过「自定义」来设置它们之间的父子格关系。

  • 实现:A2 单元格和 B3 单元格不相邻,但是它们之间仍然存在纵向扩展的层级关系。 选中 B3 单元格,右边属性面板选择「单元格属性>扩展」,扩展方向采用默认设置「纵向扩展」,左父格自定义为 A2 单元格。
    image

  • 实现效果:
    image

3.4 最父格

  • 最父格严格来说要分为「最左父格」和「最上父格」,前者是纵向扩展的概念,后者是横向扩展的概念。

  • 例如:有张纵向扩展的明细表,其中 A2 的左父格为 B2 ,C2 的左父格为 A2 ,此时 B2 就是一个最父格,且是最左父格。B2->A2->C2。
    image

  • 表格预览效果如下:
    image

  • 最父格的特点:

    • 存在跟随其扩展的子单元格,也就是有单元格以它为父格。
    • 最父格自身是没有父格的,所以其扩展不受其他单元格影响。