Back to Nocobase

排序字段

docs/docs/cn/data-sources/field-sort/index.md

2.1.264.6 KB
Original Source

排序字段

介绍

在 NocoBase 中,排序字段(Sort) 用于记录数据表中记录的排序值。它常用于表格、看板等区块的拖拽排序。

排序字段支持不分组排序,也支持先分组再排序。分组排序适合“同一个分组内独立排序”的场景,比如按班级排列学生、按看板状态排列任务。

:::warning 注意

因为排序字段是同表字段,所以分组排序时,不支持同一条记录同时出现在多个组里。

:::

安装

排序字段由内置插件提供,无需单独安装。

创建排序字段

在数据表的「Configure fields」页面中,点击「Add field」,选择「排序」可以创建排序字段。

创建排序字段时,NocoBase 会对排序值进行初始化:

  • 如果未选择分组排序,会依据主键字段和创建日期字段进行初始化
  • 如果选择了分组排序,会先对数据进行分组,再依据主键字段和创建日期字段进行初始化

:::warning 注意

创建字段时,如果排序值初始化失败,就不会创建排序字段。在某个范围内,如果某条记录从 A 位置移动到 B 位置,AB 区间内所有记录的排序值都会变更;如果其中一条失败,移动就会失败,相关记录的排序值都不会变更。

:::

创建未分组排序字段

下面是创建 sort1 字段的例子,这个字段不使用分组排序。

各记录排序字段会依据主键字段和创建日期字段进行初始化。

创建分组排序字段

下面是创建一个基于 Class ID 分组的 sort2 字段。

此时会对数据表中的全部记录先按 Class ID 分组,再进行排序字段初始化。

拖拽排序

排序字段主要用于各种区块记录的拖拽排序。目前支持拖拽排序的区块有表格和看板。

:::warning 注意

  • 同一个排序字段作为拖拽排序时,多区块混用可能会破坏已有排序
  • 表格拖拽排序的字段不能选择带分组规则的排序字段
  • 一对多关系表格区块里,外键可以作为分组
  • 目前仅看板区块支持分组拖拽排序

:::

表格行的拖拽排序

表格区块可以使用排序字段拖拽调整记录顺序。

关系表格区块也可以使用排序字段拖拽排序。

<video controls width="100%" src="https://static-docs.nocobase.com/20240409111903_rec_.mp4" title="关系表格区块拖拽排序"></video>

:::warning 注意

一对多关系区块里,如果选择未分组的排序字段,那么所有记录都可能参与排序;如果基于外键先分组再排序,那么排序规则只会影响当前分组内的数据。最终效果可能看起来一致,但参与排序的记录范围不同。

:::

看板卡片的拖拽排序

看板区块可以使用排序字段拖拽调整卡片顺序。

排序规则说明

未分组记录之间的移动

假设有一组数据:

text
[1,2,3,4,5,6,7,8,9]

当 5 向前移动到 3 的位置时,只有 3、4、5 的序号会变动。5 占用 3 的位置,3 和 4 各向后移动一个位置。

text
[1,2,5,3,4,6,7,8,9]

此时继续把 6 向后移动到 8 的位置,6 占用 8 的位置,7 和 8 各向前移动一个位置。

text
[1,2,5,3,4,7,8,6,9]

不同分组之间的移动

分组排序时,当某条记录移动到其他组里时,自身所在组也会发生改变。假设有两组数据:

text
A: [1,2,3,4]
B: [5,6,7,8]

当 1 移动到 6 后面时,1 所在组也会从 A 变为 B。

text
A: [2,3,4]
B: [5,6,1,7,8]

排序变更和界面显示的数据无关

假设有一组数据:

text
[1,2,3,4,5,6,7,8,9]

界面只显示:

text
[1,5,9]

当 1 移动到 9 的位置时,中间的 2、3、4、5、6、7、8 的位置都会变更。

text
[2,3,4,5,6,7,8,9,1]

界面最终显示为:

text
[5,9,1]

相关链接