子数据集

子数据集是指数据集里边的一个子类,比如商品数据集,可以给它添加一个商品库存这个子数据集,这样可以扩展商品数据集的数据内容。

设计好子数据集的层级和结构后,就可以用来装载多层结构的数据,比如多层的 JSON 数据。

一个数据集,可以设置多个子数据集。每个子数据集里边,还可以继续设置子数据集,实现像树一样的多层结构。

“设置子数据集”在数据集的右侧设置中,如下图所示:

1719398830855

子数据集数据来源有两种,一种是通过设置数据集的输出数据集,获取嵌套数据;另一种是使用其它方法获取 JSON 数据,手工加载。

特别说明:注意区别下面两种情况

  • 使用两个数据组件,设置主从选项,形成主从关系,适用于界面上只展现一条主表的从数据的场景
  • 使用一个数据组件,设置子数据集,形成主从关系,适用于界面上同时展现多条主表的从数据的场景

使用输出数据集获取嵌套数据

数据集支持设置输出数据集,通过输出数据集,可以获取嵌套数据

添加输出数据集

在数据组件的数据列中,选中输出数据集,以获取嵌套数据,如下图所示,注意,数据列一旦选择,就必须把所有需要的列都选中,特别是主键、外键、版本等列

1725527317589

设置子数据集

在数据组件上设置子数据集,如下图所示,数据列选择输出数据集的列,子数据集选择对应的数据模型(用于后续可视化设计)

1721702970842

用表格显示子数据集

表格,绑定数据组件,添加子表格,绑定数据组件的输出数据集列,如下图所示

1721703278466

数据组件刷新数据,得到嵌套数据,自动加载到数据组件和子数据集中,运行效果如下图所示

1721703416313

手动加载 JSON 数据

添加子数据集 JSON 数据列

设置子数据集之前,先评估主数据集是否需要新增计算列来存放子数据集的数据。既可以使用原来的列(如果原来有值会被覆盖),也可以使用计算列。

这里新增计算列来存放子数据集。

1719399024772

设置子数据集

点击“设置子数据集”,选择新增的计算列来关联子数据集:

1719401752493

加载 JSON 数据

设置后的数据结构,可以用来加载多层的 JSON 数据,比如从第三方 API 接口获取的复杂数据。这里以静态的 JSON 数据为例,点击按钮加载数据到主数据集中,同时也同步加载到了子数据集中。示例代码如下

    onButton1Click = (event) => {
        let exampleName = "鼠标";
        // 比如来自第三方数据
        let data = [
            {
                "fid": wx.UUID.createUUID(),
                "name": exampleName,
                // 这里是子数据集的数据
                "stock": [
                    {
                        "fid": wx.UUID.createUUID(),
                        "name": exampleName,
                        "model": "有线鼠标",
                        "store": 50
                    },
                    {
                        "fid": wx.UUID.createUUID(),
                        "name": exampleName,
                        "model": "无线鼠标",
                        "store": 30
                    }
                ]
            }
        ]

        // 一次性加载数据
        this.comp("restData0").loadData(data, true);
        console.log(this.comp("restData0").toJson());
    }

用表格显示子数据集

设置子数据集后,数据组件的数据结构类似于:商品.库存 => 商品库存。这个数据结构,符合 表格 => 子表格 的形式,因此可以绑定表格来展示

主表格绑定商品数据集

1719402090062

主表格添加子表格,子表格绑定子数据集对应的列

1719402192835

加载数据后,主数据集和子数据集都有数据,在表格中的效果如下图所示

1719403115226

results matching ""

    No results matching ""